From: Bhupesh Sharma <bhupesh.sharma@linaro.org>
To: linux-arm-msm@vger.kernel.org
Cc: bhupesh.sharma@linaro.org,
Thara Gopinath <thara.gopinath@linaro.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
Rob Herring <robh+dt@kernel.org>, Andy Gross <agross@kernel.org>,
Herbert Xu <herbert@gondor.apana.org.au>,
"David S . Miller" <davem@davemloft.net>,
Stephen Boyd <sboyd@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Vinod Koul <vkoul@kernel.org>,
dmaengine@vger.kernel.org, linux-clk@vger.kernel.org,
linux-crypto@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, bhupesh.linux@gmail.com
Subject: [PATCH v2 14/17] dma: qcom: bam_dma: Create a new header file for BAM DMA driver
Date: Thu, 6 May 2021 03:07:28 +0530 [thread overview]
Message-ID: <20210505213731.538612-15-bhupesh.sharma@linaro.org> (raw)
In-Reply-To: <20210505213731.538612-1-bhupesh.sharma@linaro.org>
Create a new header file for BAM DMA driver to make sure
that it can be included in the follow-up patch to defer probing
drivers which require BAM DMA driver to be first probed successfully.
Cc: Thara Gopinath <thara.gopinath@linaro.org>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Andy Gross <agross@kernel.org>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: David S. Miller <davem@davemloft.net>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Vinod Koul <vkoul@kernel.org>
Cc: dmaengine@vger.kernel.org
Cc: linux-clk@vger.kernel.org
Cc: linux-crypto@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: bhupesh.linux@gmail.com
Signed-off-by: Bhupesh Sharma <bhupesh.sharma@linaro.org>
---
drivers/dma/qcom/bam_dma.c | 283 +-----------------------------------
include/soc/qcom/bam_dma.h | 290 +++++++++++++++++++++++++++++++++++++
2 files changed, 293 insertions(+), 280 deletions(-)
create mode 100644 include/soc/qcom/bam_dma.h
diff --git a/drivers/dma/qcom/bam_dma.c b/drivers/dma/qcom/bam_dma.c
index fc84ef42507d..2bc3b7c7ee5a 100644
--- a/drivers/dma/qcom/bam_dma.c
+++ b/drivers/dma/qcom/bam_dma.c
@@ -42,23 +42,13 @@
#include <linux/clk.h>
#include <linux/dmaengine.h>
#include <linux/pm_runtime.h>
+#include <soc/qcom/bam_dma.h>
#include "../dmaengine.h"
#include "../virt-dma.h"
-struct bam_desc_hw {
- __le32 addr; /* Buffer physical address */
- __le16 size; /* Buffer size in bytes */
- __le16 flags;
-};
-
-#define BAM_DMA_AUTOSUSPEND_DELAY 100
-
-#define DESC_FLAG_INT BIT(15)
-#define DESC_FLAG_EOT BIT(14)
-#define DESC_FLAG_EOB BIT(13)
-#define DESC_FLAG_NWD BIT(12)
-#define DESC_FLAG_CMD BIT(11)
+/* check if BAM is probed */
+static bool bam_probed;
struct bam_async_desc {
struct virt_dma_desc vd;
@@ -78,273 +68,6 @@ struct bam_async_desc {
struct bam_desc_hw desc[];
};
-enum bam_reg {
- BAM_CTRL,
- BAM_REVISION,
- BAM_NUM_PIPES,
- BAM_DESC_CNT_TRSHLD,
- BAM_IRQ_SRCS,
- BAM_IRQ_SRCS_MSK,
- BAM_IRQ_SRCS_UNMASKED,
- BAM_IRQ_STTS,
- BAM_IRQ_CLR,
- BAM_IRQ_EN,
- BAM_CNFG_BITS,
- BAM_IRQ_SRCS_EE,
- BAM_IRQ_SRCS_MSK_EE,
- BAM_P_CTRL,
- BAM_P_RST,
- BAM_P_HALT,
- BAM_P_IRQ_STTS,
- BAM_P_IRQ_CLR,
- BAM_P_IRQ_EN,
- BAM_P_EVNT_DEST_ADDR,
- BAM_P_EVNT_REG,
- BAM_P_SW_OFSTS,
- BAM_P_DATA_FIFO_ADDR,
- BAM_P_DESC_FIFO_ADDR,
- BAM_P_EVNT_GEN_TRSHLD,
- BAM_P_FIFO_SIZES,
-};
-
-struct reg_offset_data {
- u32 base_offset;
- unsigned int pipe_mult, evnt_mult, ee_mult;
-};
-
-static const struct reg_offset_data bam_v1_3_reg_info[] = {
- [BAM_CTRL] = { 0x0F80, 0x00, 0x00, 0x00 },
- [BAM_REVISION] = { 0x0F84, 0x00, 0x00, 0x00 },
- [BAM_NUM_PIPES] = { 0x0FBC, 0x00, 0x00, 0x00 },
- [BAM_DESC_CNT_TRSHLD] = { 0x0F88, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS] = { 0x0F8C, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS_MSK] = { 0x0F90, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS_UNMASKED] = { 0x0FB0, 0x00, 0x00, 0x00 },
- [BAM_IRQ_STTS] = { 0x0F94, 0x00, 0x00, 0x00 },
- [BAM_IRQ_CLR] = { 0x0F98, 0x00, 0x00, 0x00 },
- [BAM_IRQ_EN] = { 0x0F9C, 0x00, 0x00, 0x00 },
- [BAM_CNFG_BITS] = { 0x0FFC, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS_EE] = { 0x1800, 0x00, 0x00, 0x80 },
- [BAM_IRQ_SRCS_MSK_EE] = { 0x1804, 0x00, 0x00, 0x80 },
- [BAM_P_CTRL] = { 0x0000, 0x80, 0x00, 0x00 },
- [BAM_P_RST] = { 0x0004, 0x80, 0x00, 0x00 },
- [BAM_P_HALT] = { 0x0008, 0x80, 0x00, 0x00 },
- [BAM_P_IRQ_STTS] = { 0x0010, 0x80, 0x00, 0x00 },
- [BAM_P_IRQ_CLR] = { 0x0014, 0x80, 0x00, 0x00 },
- [BAM_P_IRQ_EN] = { 0x0018, 0x80, 0x00, 0x00 },
- [BAM_P_EVNT_DEST_ADDR] = { 0x102C, 0x00, 0x40, 0x00 },
- [BAM_P_EVNT_REG] = { 0x1018, 0x00, 0x40, 0x00 },
- [BAM_P_SW_OFSTS] = { 0x1000, 0x00, 0x40, 0x00 },
- [BAM_P_DATA_FIFO_ADDR] = { 0x1024, 0x00, 0x40, 0x00 },
- [BAM_P_DESC_FIFO_ADDR] = { 0x101C, 0x00, 0x40, 0x00 },
- [BAM_P_EVNT_GEN_TRSHLD] = { 0x1028, 0x00, 0x40, 0x00 },
- [BAM_P_FIFO_SIZES] = { 0x1020, 0x00, 0x40, 0x00 },
-};
-
-static const struct reg_offset_data bam_v1_4_reg_info[] = {
- [BAM_CTRL] = { 0x0000, 0x00, 0x00, 0x00 },
- [BAM_REVISION] = { 0x0004, 0x00, 0x00, 0x00 },
- [BAM_NUM_PIPES] = { 0x003C, 0x00, 0x00, 0x00 },
- [BAM_DESC_CNT_TRSHLD] = { 0x0008, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS] = { 0x000C, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS_MSK] = { 0x0010, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS_UNMASKED] = { 0x0030, 0x00, 0x00, 0x00 },
- [BAM_IRQ_STTS] = { 0x0014, 0x00, 0x00, 0x00 },
- [BAM_IRQ_CLR] = { 0x0018, 0x00, 0x00, 0x00 },
- [BAM_IRQ_EN] = { 0x001C, 0x00, 0x00, 0x00 },
- [BAM_CNFG_BITS] = { 0x007C, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS_EE] = { 0x0800, 0x00, 0x00, 0x80 },
- [BAM_IRQ_SRCS_MSK_EE] = { 0x0804, 0x00, 0x00, 0x80 },
- [BAM_P_CTRL] = { 0x1000, 0x1000, 0x00, 0x00 },
- [BAM_P_RST] = { 0x1004, 0x1000, 0x00, 0x00 },
- [BAM_P_HALT] = { 0x1008, 0x1000, 0x00, 0x00 },
- [BAM_P_IRQ_STTS] = { 0x1010, 0x1000, 0x00, 0x00 },
- [BAM_P_IRQ_CLR] = { 0x1014, 0x1000, 0x00, 0x00 },
- [BAM_P_IRQ_EN] = { 0x1018, 0x1000, 0x00, 0x00 },
- [BAM_P_EVNT_DEST_ADDR] = { 0x182C, 0x00, 0x1000, 0x00 },
- [BAM_P_EVNT_REG] = { 0x1818, 0x00, 0x1000, 0x00 },
- [BAM_P_SW_OFSTS] = { 0x1800, 0x00, 0x1000, 0x00 },
- [BAM_P_DATA_FIFO_ADDR] = { 0x1824, 0x00, 0x1000, 0x00 },
- [BAM_P_DESC_FIFO_ADDR] = { 0x181C, 0x00, 0x1000, 0x00 },
- [BAM_P_EVNT_GEN_TRSHLD] = { 0x1828, 0x00, 0x1000, 0x00 },
- [BAM_P_FIFO_SIZES] = { 0x1820, 0x00, 0x1000, 0x00 },
-};
-
-static const struct reg_offset_data bam_v1_7_reg_info[] = {
- [BAM_CTRL] = { 0x00000, 0x00, 0x00, 0x00 },
- [BAM_REVISION] = { 0x01000, 0x00, 0x00, 0x00 },
- [BAM_NUM_PIPES] = { 0x01008, 0x00, 0x00, 0x00 },
- [BAM_DESC_CNT_TRSHLD] = { 0x00008, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS] = { 0x03010, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS_MSK] = { 0x03014, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS_UNMASKED] = { 0x03018, 0x00, 0x00, 0x00 },
- [BAM_IRQ_STTS] = { 0x00014, 0x00, 0x00, 0x00 },
- [BAM_IRQ_CLR] = { 0x00018, 0x00, 0x00, 0x00 },
- [BAM_IRQ_EN] = { 0x0001C, 0x00, 0x00, 0x00 },
- [BAM_CNFG_BITS] = { 0x0007C, 0x00, 0x00, 0x00 },
- [BAM_IRQ_SRCS_EE] = { 0x03000, 0x00, 0x00, 0x1000 },
- [BAM_IRQ_SRCS_MSK_EE] = { 0x03004, 0x00, 0x00, 0x1000 },
- [BAM_P_CTRL] = { 0x13000, 0x1000, 0x00, 0x00 },
- [BAM_P_RST] = { 0x13004, 0x1000, 0x00, 0x00 },
- [BAM_P_HALT] = { 0x13008, 0x1000, 0x00, 0x00 },
- [BAM_P_IRQ_STTS] = { 0x13010, 0x1000, 0x00, 0x00 },
- [BAM_P_IRQ_CLR] = { 0x13014, 0x1000, 0x00, 0x00 },
- [BAM_P_IRQ_EN] = { 0x13018, 0x1000, 0x00, 0x00 },
- [BAM_P_EVNT_DEST_ADDR] = { 0x1382C, 0x00, 0x1000, 0x00 },
- [BAM_P_EVNT_REG] = { 0x13818, 0x00, 0x1000, 0x00 },
- [BAM_P_SW_OFSTS] = { 0x13800, 0x00, 0x1000, 0x00 },
- [BAM_P_DATA_FIFO_ADDR] = { 0x13824, 0x00, 0x1000, 0x00 },
- [BAM_P_DESC_FIFO_ADDR] = { 0x1381C, 0x00, 0x1000, 0x00 },
- [BAM_P_EVNT_GEN_TRSHLD] = { 0x13828, 0x00, 0x1000, 0x00 },
- [BAM_P_FIFO_SIZES] = { 0x13820, 0x00, 0x1000, 0x00 },
-};
-
-/* BAM CTRL */
-#define BAM_SW_RST BIT(0)
-#define BAM_EN BIT(1)
-#define BAM_EN_ACCUM BIT(4)
-#define BAM_TESTBUS_SEL_SHIFT 5
-#define BAM_TESTBUS_SEL_MASK 0x3F
-#define BAM_DESC_CACHE_SEL_SHIFT 13
-#define BAM_DESC_CACHE_SEL_MASK 0x3
-#define BAM_CACHED_DESC_STORE BIT(15)
-#define IBC_DISABLE BIT(16)
-
-/* BAM REVISION */
-#define REVISION_SHIFT 0
-#define REVISION_MASK 0xFF
-#define NUM_EES_SHIFT 8
-#define NUM_EES_MASK 0xF
-#define CE_BUFFER_SIZE BIT(13)
-#define AXI_ACTIVE BIT(14)
-#define USE_VMIDMT BIT(15)
-#define SECURED BIT(16)
-#define BAM_HAS_NO_BYPASS BIT(17)
-#define HIGH_FREQUENCY_BAM BIT(18)
-#define INACTIV_TMRS_EXST BIT(19)
-#define NUM_INACTIV_TMRS BIT(20)
-#define DESC_CACHE_DEPTH_SHIFT 21
-#define DESC_CACHE_DEPTH_1 (0 << DESC_CACHE_DEPTH_SHIFT)
-#define DESC_CACHE_DEPTH_2 (1 << DESC_CACHE_DEPTH_SHIFT)
-#define DESC_CACHE_DEPTH_3 (2 << DESC_CACHE_DEPTH_SHIFT)
-#define DESC_CACHE_DEPTH_4 (3 << DESC_CACHE_DEPTH_SHIFT)
-#define CMD_DESC_EN BIT(23)
-#define INACTIV_TMR_BASE_SHIFT 24
-#define INACTIV_TMR_BASE_MASK 0xFF
-
-/* BAM NUM PIPES */
-#define BAM_NUM_PIPES_SHIFT 0
-#define BAM_NUM_PIPES_MASK 0xFF
-#define PERIPH_NON_PIPE_GRP_SHIFT 16
-#define PERIPH_NON_PIP_GRP_MASK 0xFF
-#define BAM_NON_PIPE_GRP_SHIFT 24
-#define BAM_NON_PIPE_GRP_MASK 0xFF
-
-/* BAM CNFG BITS */
-#define BAM_PIPE_CNFG BIT(2)
-#define BAM_FULL_PIPE BIT(11)
-#define BAM_NO_EXT_P_RST BIT(12)
-#define BAM_IBC_DISABLE BIT(13)
-#define BAM_SB_CLK_REQ BIT(14)
-#define BAM_PSM_CSW_REQ BIT(15)
-#define BAM_PSM_P_RES BIT(16)
-#define BAM_AU_P_RES BIT(17)
-#define BAM_SI_P_RES BIT(18)
-#define BAM_WB_P_RES BIT(19)
-#define BAM_WB_BLK_CSW BIT(20)
-#define BAM_WB_CSW_ACK_IDL BIT(21)
-#define BAM_WB_RETR_SVPNT BIT(22)
-#define BAM_WB_DSC_AVL_P_RST BIT(23)
-#define BAM_REG_P_EN BIT(24)
-#define BAM_PSM_P_HD_DATA BIT(25)
-#define BAM_AU_ACCUMED BIT(26)
-#define BAM_CMD_ENABLE BIT(27)
-
-#define BAM_CNFG_BITS_DEFAULT (BAM_PIPE_CNFG | \
- BAM_NO_EXT_P_RST | \
- BAM_IBC_DISABLE | \
- BAM_SB_CLK_REQ | \
- BAM_PSM_CSW_REQ | \
- BAM_PSM_P_RES | \
- BAM_AU_P_RES | \
- BAM_SI_P_RES | \
- BAM_WB_P_RES | \
- BAM_WB_BLK_CSW | \
- BAM_WB_CSW_ACK_IDL | \
- BAM_WB_RETR_SVPNT | \
- BAM_WB_DSC_AVL_P_RST | \
- BAM_REG_P_EN | \
- BAM_PSM_P_HD_DATA | \
- BAM_AU_ACCUMED | \
- BAM_CMD_ENABLE)
-
-/* PIPE CTRL */
-#define P_EN BIT(1)
-#define P_DIRECTION BIT(3)
-#define P_SYS_STRM BIT(4)
-#define P_SYS_MODE BIT(5)
-#define P_AUTO_EOB BIT(6)
-#define P_AUTO_EOB_SEL_SHIFT 7
-#define P_AUTO_EOB_SEL_512 (0 << P_AUTO_EOB_SEL_SHIFT)
-#define P_AUTO_EOB_SEL_256 (1 << P_AUTO_EOB_SEL_SHIFT)
-#define P_AUTO_EOB_SEL_128 (2 << P_AUTO_EOB_SEL_SHIFT)
-#define P_AUTO_EOB_SEL_64 (3 << P_AUTO_EOB_SEL_SHIFT)
-#define P_PREFETCH_LIMIT_SHIFT 9
-#define P_PREFETCH_LIMIT_32 (0 << P_PREFETCH_LIMIT_SHIFT)
-#define P_PREFETCH_LIMIT_16 (1 << P_PREFETCH_LIMIT_SHIFT)
-#define P_PREFETCH_LIMIT_4 (2 << P_PREFETCH_LIMIT_SHIFT)
-#define P_WRITE_NWD BIT(11)
-#define P_LOCK_GROUP_SHIFT 16
-#define P_LOCK_GROUP_MASK 0x1F
-
-/* BAM_DESC_CNT_TRSHLD */
-#define CNT_TRSHLD 0xffff
-#define DEFAULT_CNT_THRSHLD 0x4
-
-/* BAM_IRQ_SRCS */
-#define BAM_IRQ BIT(31)
-#define P_IRQ 0x7fffffff
-
-/* BAM_IRQ_SRCS_MSK */
-#define BAM_IRQ_MSK BAM_IRQ
-#define P_IRQ_MSK P_IRQ
-
-/* BAM_IRQ_STTS */
-#define BAM_TIMER_IRQ BIT(4)
-#define BAM_EMPTY_IRQ BIT(3)
-#define BAM_ERROR_IRQ BIT(2)
-#define BAM_HRESP_ERR_IRQ BIT(1)
-
-/* BAM_IRQ_CLR */
-#define BAM_TIMER_CLR BIT(4)
-#define BAM_EMPTY_CLR BIT(3)
-#define BAM_ERROR_CLR BIT(2)
-#define BAM_HRESP_ERR_CLR BIT(1)
-
-/* BAM_IRQ_EN */
-#define BAM_TIMER_EN BIT(4)
-#define BAM_EMPTY_EN BIT(3)
-#define BAM_ERROR_EN BIT(2)
-#define BAM_HRESP_ERR_EN BIT(1)
-
-/* BAM_P_IRQ_EN */
-#define P_PRCSD_DESC_EN BIT(0)
-#define P_TIMER_EN BIT(1)
-#define P_WAKE_EN BIT(2)
-#define P_OUT_OF_DESC_EN BIT(3)
-#define P_ERR_EN BIT(4)
-#define P_TRNSFR_END_EN BIT(5)
-#define P_DEFAULT_IRQS_EN (P_PRCSD_DESC_EN | P_ERR_EN | P_TRNSFR_END_EN)
-
-/* BAM_P_SW_OFSTS */
-#define P_SW_OFSTS_MASK 0xffff
-
-#define BAM_DESC_FIFO_SIZE SZ_32K
-#define MAX_DESCRIPTORS (BAM_DESC_FIFO_SIZE / sizeof(struct bam_desc_hw) - 1)
-#define BAM_FIFO_SIZE (SZ_32K - 8)
-#define IS_BUSY(chan) (CIRC_SPACE(bchan->tail, bchan->head,\
- MAX_DESCRIPTORS + 1) == 0)
-
struct bam_chan {
struct virt_dma_chan vc;
diff --git a/include/soc/qcom/bam_dma.h b/include/soc/qcom/bam_dma.h
new file mode 100644
index 000000000000..d2cd63c13385
--- /dev/null
+++ b/include/soc/qcom/bam_dma.h
@@ -0,0 +1,290 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. */
+
+#ifndef QCOM_BAM_DMA_H
+#define QCOM_BAM_DMA_H
+
+struct bam_desc_hw {
+ __le32 addr; /* Buffer physical address */
+ __le16 size; /* Buffer size in bytes */
+ __le16 flags;
+};
+
+#define BAM_DMA_AUTOSUSPEND_DELAY 100
+
+#define DESC_FLAG_INT BIT(15)
+#define DESC_FLAG_EOT BIT(14)
+#define DESC_FLAG_EOB BIT(13)
+#define DESC_FLAG_NWD BIT(12)
+#define DESC_FLAG_CMD BIT(11)
+
+enum bam_reg {
+ BAM_CTRL,
+ BAM_REVISION,
+ BAM_NUM_PIPES,
+ BAM_DESC_CNT_TRSHLD,
+ BAM_IRQ_SRCS,
+ BAM_IRQ_SRCS_MSK,
+ BAM_IRQ_SRCS_UNMASKED,
+ BAM_IRQ_STTS,
+ BAM_IRQ_CLR,
+ BAM_IRQ_EN,
+ BAM_CNFG_BITS,
+ BAM_IRQ_SRCS_EE,
+ BAM_IRQ_SRCS_MSK_EE,
+ BAM_P_CTRL,
+ BAM_P_RST,
+ BAM_P_HALT,
+ BAM_P_IRQ_STTS,
+ BAM_P_IRQ_CLR,
+ BAM_P_IRQ_EN,
+ BAM_P_EVNT_DEST_ADDR,
+ BAM_P_EVNT_REG,
+ BAM_P_SW_OFSTS,
+ BAM_P_DATA_FIFO_ADDR,
+ BAM_P_DESC_FIFO_ADDR,
+ BAM_P_EVNT_GEN_TRSHLD,
+ BAM_P_FIFO_SIZES,
+};
+
+struct reg_offset_data {
+ u32 base_offset;
+ unsigned int pipe_mult, evnt_mult, ee_mult;
+};
+
+static const struct reg_offset_data bam_v1_3_reg_info[] = {
+ [BAM_CTRL] = { 0x0F80, 0x00, 0x00, 0x00 },
+ [BAM_REVISION] = { 0x0F84, 0x00, 0x00, 0x00 },
+ [BAM_NUM_PIPES] = { 0x0FBC, 0x00, 0x00, 0x00 },
+ [BAM_DESC_CNT_TRSHLD] = { 0x0F88, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS] = { 0x0F8C, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS_MSK] = { 0x0F90, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS_UNMASKED] = { 0x0FB0, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_STTS] = { 0x0F94, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_CLR] = { 0x0F98, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_EN] = { 0x0F9C, 0x00, 0x00, 0x00 },
+ [BAM_CNFG_BITS] = { 0x0FFC, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS_EE] = { 0x1800, 0x00, 0x00, 0x80 },
+ [BAM_IRQ_SRCS_MSK_EE] = { 0x1804, 0x00, 0x00, 0x80 },
+ [BAM_P_CTRL] = { 0x0000, 0x80, 0x00, 0x00 },
+ [BAM_P_RST] = { 0x0004, 0x80, 0x00, 0x00 },
+ [BAM_P_HALT] = { 0x0008, 0x80, 0x00, 0x00 },
+ [BAM_P_IRQ_STTS] = { 0x0010, 0x80, 0x00, 0x00 },
+ [BAM_P_IRQ_CLR] = { 0x0014, 0x80, 0x00, 0x00 },
+ [BAM_P_IRQ_EN] = { 0x0018, 0x80, 0x00, 0x00 },
+ [BAM_P_EVNT_DEST_ADDR] = { 0x102C, 0x00, 0x40, 0x00 },
+ [BAM_P_EVNT_REG] = { 0x1018, 0x00, 0x40, 0x00 },
+ [BAM_P_SW_OFSTS] = { 0x1000, 0x00, 0x40, 0x00 },
+ [BAM_P_DATA_FIFO_ADDR] = { 0x1024, 0x00, 0x40, 0x00 },
+ [BAM_P_DESC_FIFO_ADDR] = { 0x101C, 0x00, 0x40, 0x00 },
+ [BAM_P_EVNT_GEN_TRSHLD] = { 0x1028, 0x00, 0x40, 0x00 },
+ [BAM_P_FIFO_SIZES] = { 0x1020, 0x00, 0x40, 0x00 },
+};
+
+static const struct reg_offset_data bam_v1_4_reg_info[] = {
+ [BAM_CTRL] = { 0x0000, 0x00, 0x00, 0x00 },
+ [BAM_REVISION] = { 0x0004, 0x00, 0x00, 0x00 },
+ [BAM_NUM_PIPES] = { 0x003C, 0x00, 0x00, 0x00 },
+ [BAM_DESC_CNT_TRSHLD] = { 0x0008, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS] = { 0x000C, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS_MSK] = { 0x0010, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS_UNMASKED] = { 0x0030, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_STTS] = { 0x0014, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_CLR] = { 0x0018, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_EN] = { 0x001C, 0x00, 0x00, 0x00 },
+ [BAM_CNFG_BITS] = { 0x007C, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS_EE] = { 0x0800, 0x00, 0x00, 0x80 },
+ [BAM_IRQ_SRCS_MSK_EE] = { 0x0804, 0x00, 0x00, 0x80 },
+ [BAM_P_CTRL] = { 0x1000, 0x1000, 0x00, 0x00 },
+ [BAM_P_RST] = { 0x1004, 0x1000, 0x00, 0x00 },
+ [BAM_P_HALT] = { 0x1008, 0x1000, 0x00, 0x00 },
+ [BAM_P_IRQ_STTS] = { 0x1010, 0x1000, 0x00, 0x00 },
+ [BAM_P_IRQ_CLR] = { 0x1014, 0x1000, 0x00, 0x00 },
+ [BAM_P_IRQ_EN] = { 0x1018, 0x1000, 0x00, 0x00 },
+ [BAM_P_EVNT_DEST_ADDR] = { 0x182C, 0x00, 0x1000, 0x00 },
+ [BAM_P_EVNT_REG] = { 0x1818, 0x00, 0x1000, 0x00 },
+ [BAM_P_SW_OFSTS] = { 0x1800, 0x00, 0x1000, 0x00 },
+ [BAM_P_DATA_FIFO_ADDR] = { 0x1824, 0x00, 0x1000, 0x00 },
+ [BAM_P_DESC_FIFO_ADDR] = { 0x181C, 0x00, 0x1000, 0x00 },
+ [BAM_P_EVNT_GEN_TRSHLD] = { 0x1828, 0x00, 0x1000, 0x00 },
+ [BAM_P_FIFO_SIZES] = { 0x1820, 0x00, 0x1000, 0x00 },
+};
+
+static const struct reg_offset_data bam_v1_7_reg_info[] = {
+ [BAM_CTRL] = { 0x00000, 0x00, 0x00, 0x00 },
+ [BAM_REVISION] = { 0x01000, 0x00, 0x00, 0x00 },
+ [BAM_NUM_PIPES] = { 0x01008, 0x00, 0x00, 0x00 },
+ [BAM_DESC_CNT_TRSHLD] = { 0x00008, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS] = { 0x03010, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS_MSK] = { 0x03014, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS_UNMASKED] = { 0x03018, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_STTS] = { 0x00014, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_CLR] = { 0x00018, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_EN] = { 0x0001C, 0x00, 0x00, 0x00 },
+ [BAM_CNFG_BITS] = { 0x0007C, 0x00, 0x00, 0x00 },
+ [BAM_IRQ_SRCS_EE] = { 0x03000, 0x00, 0x00, 0x1000 },
+ [BAM_IRQ_SRCS_MSK_EE] = { 0x03004, 0x00, 0x00, 0x1000 },
+ [BAM_P_CTRL] = { 0x13000, 0x1000, 0x00, 0x00 },
+ [BAM_P_RST] = { 0x13004, 0x1000, 0x00, 0x00 },
+ [BAM_P_HALT] = { 0x13008, 0x1000, 0x00, 0x00 },
+ [BAM_P_IRQ_STTS] = { 0x13010, 0x1000, 0x00, 0x00 },
+ [BAM_P_IRQ_CLR] = { 0x13014, 0x1000, 0x00, 0x00 },
+ [BAM_P_IRQ_EN] = { 0x13018, 0x1000, 0x00, 0x00 },
+ [BAM_P_EVNT_DEST_ADDR] = { 0x1382C, 0x00, 0x1000, 0x00 },
+ [BAM_P_EVNT_REG] = { 0x13818, 0x00, 0x1000, 0x00 },
+ [BAM_P_SW_OFSTS] = { 0x13800, 0x00, 0x1000, 0x00 },
+ [BAM_P_DATA_FIFO_ADDR] = { 0x13824, 0x00, 0x1000, 0x00 },
+ [BAM_P_DESC_FIFO_ADDR] = { 0x1381C, 0x00, 0x1000, 0x00 },
+ [BAM_P_EVNT_GEN_TRSHLD] = { 0x13828, 0x00, 0x1000, 0x00 },
+ [BAM_P_FIFO_SIZES] = { 0x13820, 0x00, 0x1000, 0x00 },
+};
+
+/* BAM CTRL */
+#define BAM_SW_RST BIT(0)
+#define BAM_EN BIT(1)
+#define BAM_EN_ACCUM BIT(4)
+#define BAM_TESTBUS_SEL_SHIFT 5
+#define BAM_TESTBUS_SEL_MASK 0x3F
+#define BAM_DESC_CACHE_SEL_SHIFT 13
+#define BAM_DESC_CACHE_SEL_MASK 0x3
+#define BAM_CACHED_DESC_STORE BIT(15)
+#define IBC_DISABLE BIT(16)
+
+/* BAM REVISION */
+#define REVISION_SHIFT 0
+#define REVISION_MASK 0xFF
+#define NUM_EES_SHIFT 8
+#define NUM_EES_MASK 0xF
+#define CE_BUFFER_SIZE BIT(13)
+#define AXI_ACTIVE BIT(14)
+#define USE_VMIDMT BIT(15)
+#define SECURED BIT(16)
+#define BAM_HAS_NO_BYPASS BIT(17)
+#define HIGH_FREQUENCY_BAM BIT(18)
+#define INACTIV_TMRS_EXST BIT(19)
+#define NUM_INACTIV_TMRS BIT(20)
+#define DESC_CACHE_DEPTH_SHIFT 21
+#define DESC_CACHE_DEPTH_1 (0 << DESC_CACHE_DEPTH_SHIFT)
+#define DESC_CACHE_DEPTH_2 (1 << DESC_CACHE_DEPTH_SHIFT)
+#define DESC_CACHE_DEPTH_3 (2 << DESC_CACHE_DEPTH_SHIFT)
+#define DESC_CACHE_DEPTH_4 (3 << DESC_CACHE_DEPTH_SHIFT)
+#define CMD_DESC_EN BIT(23)
+#define INACTIV_TMR_BASE_SHIFT 24
+#define INACTIV_TMR_BASE_MASK 0xFF
+
+/* BAM NUM PIPES */
+#define BAM_NUM_PIPES_SHIFT 0
+#define BAM_NUM_PIPES_MASK 0xFF
+#define PERIPH_NON_PIPE_GRP_SHIFT 16
+#define PERIPH_NON_PIP_GRP_MASK 0xFF
+#define BAM_NON_PIPE_GRP_SHIFT 24
+#define BAM_NON_PIPE_GRP_MASK 0xFF
+
+/* BAM CNFG BITS */
+#define BAM_PIPE_CNFG BIT(2)
+#define BAM_FULL_PIPE BIT(11)
+#define BAM_NO_EXT_P_RST BIT(12)
+#define BAM_IBC_DISABLE BIT(13)
+#define BAM_SB_CLK_REQ BIT(14)
+#define BAM_PSM_CSW_REQ BIT(15)
+#define BAM_PSM_P_RES BIT(16)
+#define BAM_AU_P_RES BIT(17)
+#define BAM_SI_P_RES BIT(18)
+#define BAM_WB_P_RES BIT(19)
+#define BAM_WB_BLK_CSW BIT(20)
+#define BAM_WB_CSW_ACK_IDL BIT(21)
+#define BAM_WB_RETR_SVPNT BIT(22)
+#define BAM_WB_DSC_AVL_P_RST BIT(23)
+#define BAM_REG_P_EN BIT(24)
+#define BAM_PSM_P_HD_DATA BIT(25)
+#define BAM_AU_ACCUMED BIT(26)
+#define BAM_CMD_ENABLE BIT(27)
+
+#define BAM_CNFG_BITS_DEFAULT (BAM_PIPE_CNFG | \
+ BAM_NO_EXT_P_RST | \
+ BAM_IBC_DISABLE | \
+ BAM_SB_CLK_REQ | \
+ BAM_PSM_CSW_REQ | \
+ BAM_PSM_P_RES | \
+ BAM_AU_P_RES | \
+ BAM_SI_P_RES | \
+ BAM_WB_P_RES | \
+ BAM_WB_BLK_CSW | \
+ BAM_WB_CSW_ACK_IDL | \
+ BAM_WB_RETR_SVPNT | \
+ BAM_WB_DSC_AVL_P_RST | \
+ BAM_REG_P_EN | \
+ BAM_PSM_P_HD_DATA | \
+ BAM_AU_ACCUMED | \
+ BAM_CMD_ENABLE)
+
+/* PIPE CTRL */
+#define P_EN BIT(1)
+#define P_DIRECTION BIT(3)
+#define P_SYS_STRM BIT(4)
+#define P_SYS_MODE BIT(5)
+#define P_AUTO_EOB BIT(6)
+#define P_AUTO_EOB_SEL_SHIFT 7
+#define P_AUTO_EOB_SEL_512 (0 << P_AUTO_EOB_SEL_SHIFT)
+#define P_AUTO_EOB_SEL_256 (1 << P_AUTO_EOB_SEL_SHIFT)
+#define P_AUTO_EOB_SEL_128 (2 << P_AUTO_EOB_SEL_SHIFT)
+#define P_AUTO_EOB_SEL_64 (3 << P_AUTO_EOB_SEL_SHIFT)
+#define P_PREFETCH_LIMIT_SHIFT 9
+#define P_PREFETCH_LIMIT_32 (0 << P_PREFETCH_LIMIT_SHIFT)
+#define P_PREFETCH_LIMIT_16 (1 << P_PREFETCH_LIMIT_SHIFT)
+#define P_PREFETCH_LIMIT_4 (2 << P_PREFETCH_LIMIT_SHIFT)
+#define P_WRITE_NWD BIT(11)
+#define P_LOCK_GROUP_SHIFT 16
+#define P_LOCK_GROUP_MASK 0x1F
+
+/* BAM_DESC_CNT_TRSHLD */
+#define CNT_TRSHLD 0xffff
+#define DEFAULT_CNT_THRSHLD 0x4
+
+/* BAM_IRQ_SRCS */
+#define BAM_IRQ BIT(31)
+#define P_IRQ 0x7fffffff
+
+/* BAM_IRQ_SRCS_MSK */
+#define BAM_IRQ_MSK BAM_IRQ
+#define P_IRQ_MSK P_IRQ
+
+/* BAM_IRQ_STTS */
+#define BAM_TIMER_IRQ BIT(4)
+#define BAM_EMPTY_IRQ BIT(3)
+#define BAM_ERROR_IRQ BIT(2)
+#define BAM_HRESP_ERR_IRQ BIT(1)
+
+/* BAM_IRQ_CLR */
+#define BAM_TIMER_CLR BIT(4)
+#define BAM_EMPTY_CLR BIT(3)
+#define BAM_ERROR_CLR BIT(2)
+#define BAM_HRESP_ERR_CLR BIT(1)
+
+/* BAM_IRQ_EN */
+#define BAM_TIMER_EN BIT(4)
+#define BAM_EMPTY_EN BIT(3)
+#define BAM_ERROR_EN BIT(2)
+#define BAM_HRESP_ERR_EN BIT(1)
+
+/* BAM_P_IRQ_EN */
+#define P_PRCSD_DESC_EN BIT(0)
+#define P_TIMER_EN BIT(1)
+#define P_WAKE_EN BIT(2)
+#define P_OUT_OF_DESC_EN BIT(3)
+#define P_ERR_EN BIT(4)
+#define P_TRNSFR_END_EN BIT(5)
+#define P_DEFAULT_IRQS_EN (P_PRCSD_DESC_EN | P_ERR_EN | P_TRNSFR_END_EN)
+
+/* BAM_P_SW_OFSTS */
+#define P_SW_OFSTS_MASK 0xffff
+
+#define BAM_DESC_FIFO_SIZE SZ_32K
+#define MAX_DESCRIPTORS (BAM_DESC_FIFO_SIZE / sizeof(struct bam_desc_hw) - 1)
+#define BAM_FIFO_SIZE (SZ_32K - 8)
+#define IS_BUSY(chan) (CIRC_SPACE(bchan->tail, bchan->head,\
+ MAX_DESCRIPTORS + 1) == 0)
+
+bool bam_is_probed(void);
+
+#endif
--
2.30.2
next prev parent reply other threads:[~2021-05-05 21:40 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-05 21:37 [PATCH v2 00/17] Enable Qualcomm Crypto Engine on sm8250 Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 01/17] dt-bindings: qcom-bam: Add 'interconnects' & 'interconnect-names' to optional properties Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 02/17] dt-bindings: qcom-bam: Add 'iommus' to required properties Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 03/17] dt-bindings: qcom-qce: " Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 04/17] dt-bindings: qcom-qce: Add 'interconnects' and move 'clocks' to optional properties Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 05/17] arm64/dts: qcom: sdm845: Use RPMH_CE_CLK macro directly Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 06/17] dt-bindings: crypto : Add new compatible strings for qcom-qce Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 07/17] arm64/dts: qcom: Use new compatibles for crypto nodes Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 08/17] dma: qcom: bam_dma: Add support to initialize interconnect path Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 09/17] crypto: qce: core: " Bhupesh Sharma
2021-05-18 15:07 ` Bjorn Andersson
2021-05-18 15:38 ` Thara Gopinath
2021-05-18 15:39 ` Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 10/17] crypto: qce: Add new compatibles for qce crypto driver Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 11/17] crypto: qce: core: Make clocks optional Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 12/17] crypto: qce: Print a failure msg in case probe() fails Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 13/17] crypto: qce: Convert the device found dev_dbg() to dev_info() Bhupesh Sharma
2021-05-05 21:37 ` Bhupesh Sharma [this message]
2021-05-09 13:58 ` [PATCH v2 14/17] dma: qcom: bam_dma: Create a new header file for BAM DMA driver Vinod Koul
2021-05-09 19:20 ` Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 15/17] crypto: qce: Defer probing if BAM dma is not yet initialized Bhupesh Sharma
2021-05-06 4:52 ` kernel test robot
2021-05-06 4:52 ` kernel test robot
2021-05-07 21:16 ` Bhupesh Sharma
2021-05-07 21:16 ` Bhupesh Sharma
2021-05-10 13:22 ` Thara Gopinath
2021-05-18 14:44 ` Bhupesh Sharma
2021-05-05 21:37 ` [PATCH v2 16/17] crypto: qce: Defer probe in case interconnect " Bhupesh Sharma
2021-05-10 13:23 ` Thara Gopinath
2021-05-18 14:39 ` Bhupesh Sharma
2021-05-10 13:58 ` Rafael Reinoldes
2021-05-05 21:37 ` [PATCH v2 17/17] arm64/dts: qcom: sm8250: Add dt entries to support crypto engine Bhupesh Sharma
2021-05-05 22:09 ` [PATCH v2 00/17] Enable Qualcomm Crypto Engine on sm8250 Eric Biggers
2021-05-07 21:12 ` Bhupesh Sharma
2021-05-07 21:14 ` Rob Herring
2021-05-08 18:56 ` Bhupesh Sharma
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210505213731.538612-15-bhupesh.sharma@linaro.org \
--to=bhupesh.sharma@linaro.org \
--cc=agross@kernel.org \
--cc=bhupesh.linux@gmail.com \
--cc=bjorn.andersson@linaro.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=dmaengine@vger.kernel.org \
--cc=herbert@gondor.apana.org.au \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=robh+dt@kernel.org \
--cc=sboyd@kernel.org \
--cc=thara.gopinath@linaro.org \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.