mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 13:22:23 +00:00
crypto: qat - relocate CSR access code
As the common hw_data files are growing and the adf_hw_csr_ops is going to be extended with new operations, move all logic related to ring CSRs to the newly created adf_gen[2|4]_hw_csr_data.[c|h] files. This does not introduce any functional change. Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com> Signed-off-by: Xin Zeng <xin.zeng@intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
867e801005
commit
680302d191
@ -10,6 +10,7 @@
|
||||
#include <adf_fw_config.h>
|
||||
#include <adf_gen4_config.h>
|
||||
#include <adf_gen4_dc.h>
|
||||
#include <adf_gen4_hw_csr_data.h>
|
||||
#include <adf_gen4_hw_data.h>
|
||||
#include <adf_gen4_pfvf.h>
|
||||
#include <adf_gen4_pm.h>
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <adf_fw_config.h>
|
||||
#include <adf_gen4_config.h>
|
||||
#include <adf_gen4_dc.h>
|
||||
#include <adf_gen4_hw_csr_data.h>
|
||||
#include <adf_gen4_hw_data.h>
|
||||
#include <adf_gen4_pfvf.h>
|
||||
#include <adf_gen4_pm.h>
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include <adf_common_drv.h>
|
||||
#include <adf_gen2_config.h>
|
||||
#include <adf_gen2_dc.h>
|
||||
#include <adf_gen2_hw_csr_data.h>
|
||||
#include <adf_gen2_hw_data.h>
|
||||
#include <adf_gen2_pfvf.h>
|
||||
#include "adf_c3xxx_hw_data.h"
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <adf_common_drv.h>
|
||||
#include <adf_gen2_config.h>
|
||||
#include <adf_gen2_dc.h>
|
||||
#include <adf_gen2_hw_csr_data.h>
|
||||
#include <adf_gen2_hw_data.h>
|
||||
#include <adf_gen2_pfvf.h>
|
||||
#include <adf_pfvf_vf_msg.h>
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include <adf_common_drv.h>
|
||||
#include <adf_gen2_config.h>
|
||||
#include <adf_gen2_dc.h>
|
||||
#include <adf_gen2_hw_csr_data.h>
|
||||
#include <adf_gen2_hw_data.h>
|
||||
#include <adf_gen2_pfvf.h>
|
||||
#include "adf_c62x_hw_data.h"
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <adf_common_drv.h>
|
||||
#include <adf_gen2_config.h>
|
||||
#include <adf_gen2_dc.h>
|
||||
#include <adf_gen2_hw_csr_data.h>
|
||||
#include <adf_gen2_hw_data.h>
|
||||
#include <adf_gen2_pfvf.h>
|
||||
#include <adf_pfvf_vf_msg.h>
|
||||
|
@ -14,9 +14,11 @@ intel_qat-objs := adf_cfg.o \
|
||||
adf_hw_arbiter.o \
|
||||
adf_sysfs.o \
|
||||
adf_sysfs_ras_counters.o \
|
||||
adf_gen2_hw_csr_data.o \
|
||||
adf_gen2_hw_data.o \
|
||||
adf_gen2_config.o \
|
||||
adf_gen4_config.o \
|
||||
adf_gen4_hw_csr_data.o \
|
||||
adf_gen4_hw_data.o \
|
||||
adf_gen4_pm.o \
|
||||
adf_gen2_dc.o \
|
||||
|
101
drivers/crypto/intel/qat/qat_common/adf_gen2_hw_csr_data.c
Normal file
101
drivers/crypto/intel/qat/qat_common/adf_gen2_hw_csr_data.c
Normal file
@ -0,0 +1,101 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright(c) 2024 Intel Corporation */
|
||||
#include <linux/types.h>
|
||||
#include "adf_gen2_hw_csr_data.h"
|
||||
|
||||
static u64 build_csr_ring_base_addr(dma_addr_t addr, u32 size)
|
||||
{
|
||||
return BUILD_RING_BASE_ADDR(addr, size);
|
||||
}
|
||||
|
||||
static u32 read_csr_ring_head(void __iomem *csr_base_addr, u32 bank, u32 ring)
|
||||
{
|
||||
return READ_CSR_RING_HEAD(csr_base_addr, bank, ring);
|
||||
}
|
||||
|
||||
static void write_csr_ring_head(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_HEAD(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static u32 read_csr_ring_tail(void __iomem *csr_base_addr, u32 bank, u32 ring)
|
||||
{
|
||||
return READ_CSR_RING_TAIL(csr_base_addr, bank, ring);
|
||||
}
|
||||
|
||||
static void write_csr_ring_tail(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_TAIL(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static u32 read_csr_e_stat(void __iomem *csr_base_addr, u32 bank)
|
||||
{
|
||||
return READ_CSR_E_STAT(csr_base_addr, bank);
|
||||
}
|
||||
|
||||
static void write_csr_ring_config(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 ring, u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static void write_csr_ring_base(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
dma_addr_t addr)
|
||||
{
|
||||
WRITE_CSR_RING_BASE(csr_base_addr, bank, ring, addr);
|
||||
}
|
||||
|
||||
static void write_csr_int_flag(void __iomem *csr_base_addr, u32 bank, u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_FLAG(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_srcsel(void __iomem *csr_base_addr, u32 bank)
|
||||
{
|
||||
WRITE_CSR_INT_SRCSEL(csr_base_addr, bank);
|
||||
}
|
||||
|
||||
static void write_csr_int_col_en(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_col_ctl(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_flag_and_col(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_ring_srv_arb_en(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_SRV_ARB_EN(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
void adf_gen2_init_hw_csr_ops(struct adf_hw_csr_ops *csr_ops)
|
||||
{
|
||||
csr_ops->build_csr_ring_base_addr = build_csr_ring_base_addr;
|
||||
csr_ops->read_csr_ring_head = read_csr_ring_head;
|
||||
csr_ops->write_csr_ring_head = write_csr_ring_head;
|
||||
csr_ops->read_csr_ring_tail = read_csr_ring_tail;
|
||||
csr_ops->write_csr_ring_tail = write_csr_ring_tail;
|
||||
csr_ops->read_csr_e_stat = read_csr_e_stat;
|
||||
csr_ops->write_csr_ring_config = write_csr_ring_config;
|
||||
csr_ops->write_csr_ring_base = write_csr_ring_base;
|
||||
csr_ops->write_csr_int_flag = write_csr_int_flag;
|
||||
csr_ops->write_csr_int_srcsel = write_csr_int_srcsel;
|
||||
csr_ops->write_csr_int_col_en = write_csr_int_col_en;
|
||||
csr_ops->write_csr_int_col_ctl = write_csr_int_col_ctl;
|
||||
csr_ops->write_csr_int_flag_and_col = write_csr_int_flag_and_col;
|
||||
csr_ops->write_csr_ring_srv_arb_en = write_csr_ring_srv_arb_en;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(adf_gen2_init_hw_csr_ops);
|
86
drivers/crypto/intel/qat/qat_common/adf_gen2_hw_csr_data.h
Normal file
86
drivers/crypto/intel/qat/qat_common/adf_gen2_hw_csr_data.h
Normal file
@ -0,0 +1,86 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/* Copyright(c) 2024 Intel Corporation */
|
||||
#ifndef ADF_GEN2_HW_CSR_DATA_H_
|
||||
#define ADF_GEN2_HW_CSR_DATA_H_
|
||||
|
||||
#include <linux/bitops.h>
|
||||
#include "adf_accel_devices.h"
|
||||
|
||||
#define ADF_BANK_INT_SRC_SEL_MASK_0 0x4444444CUL
|
||||
#define ADF_BANK_INT_SRC_SEL_MASK_X 0x44444444UL
|
||||
#define ADF_RING_CSR_RING_CONFIG 0x000
|
||||
#define ADF_RING_CSR_RING_LBASE 0x040
|
||||
#define ADF_RING_CSR_RING_UBASE 0x080
|
||||
#define ADF_RING_CSR_RING_HEAD 0x0C0
|
||||
#define ADF_RING_CSR_RING_TAIL 0x100
|
||||
#define ADF_RING_CSR_E_STAT 0x14C
|
||||
#define ADF_RING_CSR_INT_FLAG 0x170
|
||||
#define ADF_RING_CSR_INT_SRCSEL 0x174
|
||||
#define ADF_RING_CSR_INT_SRCSEL_2 0x178
|
||||
#define ADF_RING_CSR_INT_COL_EN 0x17C
|
||||
#define ADF_RING_CSR_INT_COL_CTL 0x180
|
||||
#define ADF_RING_CSR_INT_FLAG_AND_COL 0x184
|
||||
#define ADF_RING_CSR_INT_COL_CTL_ENABLE 0x80000000
|
||||
#define ADF_RING_BUNDLE_SIZE 0x1000
|
||||
#define ADF_ARB_REG_SLOT 0x1000
|
||||
#define ADF_ARB_RINGSRVARBEN_OFFSET 0x19C
|
||||
|
||||
#define BUILD_RING_BASE_ADDR(addr, size) \
|
||||
(((addr) >> 6) & (GENMASK_ULL(63, 0) << (size)))
|
||||
#define READ_CSR_RING_HEAD(csr_base_addr, bank, ring) \
|
||||
ADF_CSR_RD(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_HEAD + ((ring) << 2))
|
||||
#define READ_CSR_RING_TAIL(csr_base_addr, bank, ring) \
|
||||
ADF_CSR_RD(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_TAIL + ((ring) << 2))
|
||||
#define READ_CSR_E_STAT(csr_base_addr, bank) \
|
||||
ADF_CSR_RD(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_E_STAT)
|
||||
#define WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_CONFIG + ((ring) << 2), value)
|
||||
#define WRITE_CSR_RING_BASE(csr_base_addr, bank, ring, value) \
|
||||
do { \
|
||||
u32 l_base = 0, u_base = 0; \
|
||||
l_base = (u32)((value) & 0xFFFFFFFF); \
|
||||
u_base = (u32)(((value) & 0xFFFFFFFF00000000ULL) >> 32); \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_LBASE + ((ring) << 2), l_base); \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_UBASE + ((ring) << 2), u_base); \
|
||||
} while (0)
|
||||
|
||||
#define WRITE_CSR_RING_HEAD(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_HEAD + ((ring) << 2), value)
|
||||
#define WRITE_CSR_RING_TAIL(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_TAIL + ((ring) << 2), value)
|
||||
#define WRITE_CSR_INT_FLAG(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_FLAG, value)
|
||||
#define WRITE_CSR_INT_SRCSEL(csr_base_addr, bank) \
|
||||
do { \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_SRCSEL, ADF_BANK_INT_SRC_SEL_MASK_0); \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_SRCSEL_2, ADF_BANK_INT_SRC_SEL_MASK_X); \
|
||||
} while (0)
|
||||
#define WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_COL_EN, value)
|
||||
#define WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_COL_CTL, \
|
||||
ADF_RING_CSR_INT_COL_CTL_ENABLE | (value))
|
||||
#define WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_FLAG_AND_COL, value)
|
||||
|
||||
#define WRITE_CSR_RING_SRV_ARB_EN(csr_addr, index, value) \
|
||||
ADF_CSR_WR(csr_addr, ADF_ARB_RINGSRVARBEN_OFFSET + \
|
||||
(ADF_ARB_REG_SLOT * (index)), value)
|
||||
|
||||
void adf_gen2_init_hw_csr_ops(struct adf_hw_csr_ops *csr_ops);
|
||||
|
||||
#endif
|
@ -111,103 +111,6 @@ void adf_gen2_enable_ints(struct adf_accel_dev *accel_dev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(adf_gen2_enable_ints);
|
||||
|
||||
static u64 build_csr_ring_base_addr(dma_addr_t addr, u32 size)
|
||||
{
|
||||
return BUILD_RING_BASE_ADDR(addr, size);
|
||||
}
|
||||
|
||||
static u32 read_csr_ring_head(void __iomem *csr_base_addr, u32 bank, u32 ring)
|
||||
{
|
||||
return READ_CSR_RING_HEAD(csr_base_addr, bank, ring);
|
||||
}
|
||||
|
||||
static void write_csr_ring_head(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_HEAD(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static u32 read_csr_ring_tail(void __iomem *csr_base_addr, u32 bank, u32 ring)
|
||||
{
|
||||
return READ_CSR_RING_TAIL(csr_base_addr, bank, ring);
|
||||
}
|
||||
|
||||
static void write_csr_ring_tail(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_TAIL(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static u32 read_csr_e_stat(void __iomem *csr_base_addr, u32 bank)
|
||||
{
|
||||
return READ_CSR_E_STAT(csr_base_addr, bank);
|
||||
}
|
||||
|
||||
static void write_csr_ring_config(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 ring, u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static void write_csr_ring_base(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
dma_addr_t addr)
|
||||
{
|
||||
WRITE_CSR_RING_BASE(csr_base_addr, bank, ring, addr);
|
||||
}
|
||||
|
||||
static void write_csr_int_flag(void __iomem *csr_base_addr, u32 bank, u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_FLAG(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_srcsel(void __iomem *csr_base_addr, u32 bank)
|
||||
{
|
||||
WRITE_CSR_INT_SRCSEL(csr_base_addr, bank);
|
||||
}
|
||||
|
||||
static void write_csr_int_col_en(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_col_ctl(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_flag_and_col(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_ring_srv_arb_en(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_SRV_ARB_EN(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
void adf_gen2_init_hw_csr_ops(struct adf_hw_csr_ops *csr_ops)
|
||||
{
|
||||
csr_ops->build_csr_ring_base_addr = build_csr_ring_base_addr;
|
||||
csr_ops->read_csr_ring_head = read_csr_ring_head;
|
||||
csr_ops->write_csr_ring_head = write_csr_ring_head;
|
||||
csr_ops->read_csr_ring_tail = read_csr_ring_tail;
|
||||
csr_ops->write_csr_ring_tail = write_csr_ring_tail;
|
||||
csr_ops->read_csr_e_stat = read_csr_e_stat;
|
||||
csr_ops->write_csr_ring_config = write_csr_ring_config;
|
||||
csr_ops->write_csr_ring_base = write_csr_ring_base;
|
||||
csr_ops->write_csr_int_flag = write_csr_int_flag;
|
||||
csr_ops->write_csr_int_srcsel = write_csr_int_srcsel;
|
||||
csr_ops->write_csr_int_col_en = write_csr_int_col_en;
|
||||
csr_ops->write_csr_int_col_ctl = write_csr_int_col_ctl;
|
||||
csr_ops->write_csr_int_flag_and_col = write_csr_int_flag_and_col;
|
||||
csr_ops->write_csr_ring_srv_arb_en = write_csr_ring_srv_arb_en;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(adf_gen2_init_hw_csr_ops);
|
||||
|
||||
u32 adf_gen2_get_accel_cap(struct adf_accel_dev *accel_dev)
|
||||
{
|
||||
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
|
||||
|
@ -6,78 +6,9 @@
|
||||
#include "adf_accel_devices.h"
|
||||
#include "adf_cfg_common.h"
|
||||
|
||||
/* Transport access */
|
||||
#define ADF_BANK_INT_SRC_SEL_MASK_0 0x4444444CUL
|
||||
#define ADF_BANK_INT_SRC_SEL_MASK_X 0x44444444UL
|
||||
#define ADF_RING_CSR_RING_CONFIG 0x000
|
||||
#define ADF_RING_CSR_RING_LBASE 0x040
|
||||
#define ADF_RING_CSR_RING_UBASE 0x080
|
||||
#define ADF_RING_CSR_RING_HEAD 0x0C0
|
||||
#define ADF_RING_CSR_RING_TAIL 0x100
|
||||
#define ADF_RING_CSR_E_STAT 0x14C
|
||||
#define ADF_RING_CSR_INT_FLAG 0x170
|
||||
#define ADF_RING_CSR_INT_SRCSEL 0x174
|
||||
#define ADF_RING_CSR_INT_SRCSEL_2 0x178
|
||||
#define ADF_RING_CSR_INT_COL_EN 0x17C
|
||||
#define ADF_RING_CSR_INT_COL_CTL 0x180
|
||||
#define ADF_RING_CSR_INT_FLAG_AND_COL 0x184
|
||||
#define ADF_RING_CSR_INT_COL_CTL_ENABLE 0x80000000
|
||||
#define ADF_RING_BUNDLE_SIZE 0x1000
|
||||
#define ADF_GEN2_RX_RINGS_OFFSET 8
|
||||
#define ADF_GEN2_TX_RINGS_MASK 0xFF
|
||||
|
||||
#define BUILD_RING_BASE_ADDR(addr, size) \
|
||||
(((addr) >> 6) & (GENMASK_ULL(63, 0) << (size)))
|
||||
#define READ_CSR_RING_HEAD(csr_base_addr, bank, ring) \
|
||||
ADF_CSR_RD(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_HEAD + ((ring) << 2))
|
||||
#define READ_CSR_RING_TAIL(csr_base_addr, bank, ring) \
|
||||
ADF_CSR_RD(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_TAIL + ((ring) << 2))
|
||||
#define READ_CSR_E_STAT(csr_base_addr, bank) \
|
||||
ADF_CSR_RD(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_E_STAT)
|
||||
#define WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_CONFIG + ((ring) << 2), value)
|
||||
#define WRITE_CSR_RING_BASE(csr_base_addr, bank, ring, value) \
|
||||
do { \
|
||||
u32 l_base = 0, u_base = 0; \
|
||||
l_base = (u32)((value) & 0xFFFFFFFF); \
|
||||
u_base = (u32)(((value) & 0xFFFFFFFF00000000ULL) >> 32); \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_LBASE + ((ring) << 2), l_base); \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_UBASE + ((ring) << 2), u_base); \
|
||||
} while (0)
|
||||
|
||||
#define WRITE_CSR_RING_HEAD(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_HEAD + ((ring) << 2), value)
|
||||
#define WRITE_CSR_RING_TAIL(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_RING_TAIL + ((ring) << 2), value)
|
||||
#define WRITE_CSR_INT_FLAG(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_FLAG, value)
|
||||
#define WRITE_CSR_INT_SRCSEL(csr_base_addr, bank) \
|
||||
do { \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_SRCSEL, ADF_BANK_INT_SRC_SEL_MASK_0); \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_SRCSEL_2, ADF_BANK_INT_SRC_SEL_MASK_X); \
|
||||
} while (0)
|
||||
#define WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_COL_EN, value)
|
||||
#define WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_COL_CTL, \
|
||||
ADF_RING_CSR_INT_COL_CTL_ENABLE | (value))
|
||||
#define WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR(csr_base_addr, (ADF_RING_BUNDLE_SIZE * (bank)) + \
|
||||
ADF_RING_CSR_INT_FLAG_AND_COL, value)
|
||||
|
||||
/* AE to function map */
|
||||
#define AE2FUNCTION_MAP_A_OFFSET (0x3A400 + 0x190)
|
||||
#define AE2FUNCTION_MAP_B_OFFSET (0x3A400 + 0x310)
|
||||
@ -106,12 +37,6 @@ do { \
|
||||
#define ADF_ARB_OFFSET 0x30000
|
||||
#define ADF_ARB_WRK_2_SER_MAP_OFFSET 0x180
|
||||
#define ADF_ARB_CONFIG (BIT(31) | BIT(6) | BIT(0))
|
||||
#define ADF_ARB_REG_SLOT 0x1000
|
||||
#define ADF_ARB_RINGSRVARBEN_OFFSET 0x19C
|
||||
|
||||
#define WRITE_CSR_RING_SRV_ARB_EN(csr_addr, index, value) \
|
||||
ADF_CSR_WR(csr_addr, ADF_ARB_RINGSRVARBEN_OFFSET + \
|
||||
(ADF_ARB_REG_SLOT * (index)), value)
|
||||
|
||||
/* Power gating */
|
||||
#define ADF_POWERGATE_DC BIT(23)
|
||||
@ -158,7 +83,6 @@ u32 adf_gen2_get_num_aes(struct adf_hw_device_data *self);
|
||||
void adf_gen2_enable_error_correction(struct adf_accel_dev *accel_dev);
|
||||
void adf_gen2_cfg_iov_thds(struct adf_accel_dev *accel_dev, bool enable,
|
||||
int num_a_regs, int num_b_regs);
|
||||
void adf_gen2_init_hw_csr_ops(struct adf_hw_csr_ops *csr_ops);
|
||||
void adf_gen2_get_admin_info(struct admin_info *admin_csrs_info);
|
||||
void adf_gen2_get_arb_info(struct arb_info *arb_info);
|
||||
void adf_gen2_enable_ints(struct adf_accel_dev *accel_dev);
|
||||
|
101
drivers/crypto/intel/qat/qat_common/adf_gen4_hw_csr_data.c
Normal file
101
drivers/crypto/intel/qat/qat_common/adf_gen4_hw_csr_data.c
Normal file
@ -0,0 +1,101 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright(c) 2024 Intel Corporation */
|
||||
#include <linux/types.h>
|
||||
#include "adf_gen4_hw_csr_data.h"
|
||||
|
||||
static u64 build_csr_ring_base_addr(dma_addr_t addr, u32 size)
|
||||
{
|
||||
return BUILD_RING_BASE_ADDR(addr, size);
|
||||
}
|
||||
|
||||
static u32 read_csr_ring_head(void __iomem *csr_base_addr, u32 bank, u32 ring)
|
||||
{
|
||||
return READ_CSR_RING_HEAD(csr_base_addr, bank, ring);
|
||||
}
|
||||
|
||||
static void write_csr_ring_head(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_HEAD(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static u32 read_csr_ring_tail(void __iomem *csr_base_addr, u32 bank, u32 ring)
|
||||
{
|
||||
return READ_CSR_RING_TAIL(csr_base_addr, bank, ring);
|
||||
}
|
||||
|
||||
static void write_csr_ring_tail(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_TAIL(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static u32 read_csr_e_stat(void __iomem *csr_base_addr, u32 bank)
|
||||
{
|
||||
return READ_CSR_E_STAT(csr_base_addr, bank);
|
||||
}
|
||||
|
||||
static void write_csr_ring_config(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static void write_csr_ring_base(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
dma_addr_t addr)
|
||||
{
|
||||
WRITE_CSR_RING_BASE(csr_base_addr, bank, ring, addr);
|
||||
}
|
||||
|
||||
static void write_csr_int_flag(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_FLAG(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_srcsel(void __iomem *csr_base_addr, u32 bank)
|
||||
{
|
||||
WRITE_CSR_INT_SRCSEL(csr_base_addr, bank);
|
||||
}
|
||||
|
||||
static void write_csr_int_col_en(void __iomem *csr_base_addr, u32 bank, u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_col_ctl(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_flag_and_col(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_ring_srv_arb_en(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_SRV_ARB_EN(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
void adf_gen4_init_hw_csr_ops(struct adf_hw_csr_ops *csr_ops)
|
||||
{
|
||||
csr_ops->build_csr_ring_base_addr = build_csr_ring_base_addr;
|
||||
csr_ops->read_csr_ring_head = read_csr_ring_head;
|
||||
csr_ops->write_csr_ring_head = write_csr_ring_head;
|
||||
csr_ops->read_csr_ring_tail = read_csr_ring_tail;
|
||||
csr_ops->write_csr_ring_tail = write_csr_ring_tail;
|
||||
csr_ops->read_csr_e_stat = read_csr_e_stat;
|
||||
csr_ops->write_csr_ring_config = write_csr_ring_config;
|
||||
csr_ops->write_csr_ring_base = write_csr_ring_base;
|
||||
csr_ops->write_csr_int_flag = write_csr_int_flag;
|
||||
csr_ops->write_csr_int_srcsel = write_csr_int_srcsel;
|
||||
csr_ops->write_csr_int_col_en = write_csr_int_col_en;
|
||||
csr_ops->write_csr_int_col_ctl = write_csr_int_col_ctl;
|
||||
csr_ops->write_csr_int_flag_and_col = write_csr_int_flag_and_col;
|
||||
csr_ops->write_csr_ring_srv_arb_en = write_csr_ring_srv_arb_en;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(adf_gen4_init_hw_csr_ops);
|
97
drivers/crypto/intel/qat/qat_common/adf_gen4_hw_csr_data.h
Normal file
97
drivers/crypto/intel/qat/qat_common/adf_gen4_hw_csr_data.h
Normal file
@ -0,0 +1,97 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/* Copyright(c) 2024 Intel Corporation */
|
||||
#ifndef ADF_GEN4_HW_CSR_DATA_H_
|
||||
#define ADF_GEN4_HW_CSR_DATA_H_
|
||||
|
||||
#include <linux/bitops.h>
|
||||
#include "adf_accel_devices.h"
|
||||
|
||||
#define ADF_BANK_INT_SRC_SEL_MASK 0x44UL
|
||||
#define ADF_RING_CSR_RING_CONFIG 0x1000
|
||||
#define ADF_RING_CSR_RING_LBASE 0x1040
|
||||
#define ADF_RING_CSR_RING_UBASE 0x1080
|
||||
#define ADF_RING_CSR_RING_HEAD 0x0C0
|
||||
#define ADF_RING_CSR_RING_TAIL 0x100
|
||||
#define ADF_RING_CSR_E_STAT 0x14C
|
||||
#define ADF_RING_CSR_INT_FLAG 0x170
|
||||
#define ADF_RING_CSR_INT_SRCSEL 0x174
|
||||
#define ADF_RING_CSR_INT_COL_CTL 0x180
|
||||
#define ADF_RING_CSR_INT_FLAG_AND_COL 0x184
|
||||
#define ADF_RING_CSR_INT_COL_CTL_ENABLE 0x80000000
|
||||
#define ADF_RING_CSR_INT_COL_EN 0x17C
|
||||
#define ADF_RING_CSR_ADDR_OFFSET 0x100000
|
||||
#define ADF_RING_BUNDLE_SIZE 0x2000
|
||||
#define ADF_RING_CSR_RING_SRV_ARB_EN 0x19C
|
||||
|
||||
#define BUILD_RING_BASE_ADDR(addr, size) \
|
||||
((((addr) >> 6) & (GENMASK_ULL(63, 0) << (size))) << 6)
|
||||
#define READ_CSR_RING_HEAD(csr_base_addr, bank, ring) \
|
||||
ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_HEAD + ((ring) << 2))
|
||||
#define READ_CSR_RING_TAIL(csr_base_addr, bank, ring) \
|
||||
ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_TAIL + ((ring) << 2))
|
||||
#define READ_CSR_E_STAT(csr_base_addr, bank) \
|
||||
ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_E_STAT)
|
||||
#define WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_CONFIG + ((ring) << 2), value)
|
||||
#define WRITE_CSR_RING_BASE(csr_base_addr, bank, ring, value) \
|
||||
do { \
|
||||
void __iomem *_csr_base_addr = csr_base_addr; \
|
||||
u32 _bank = bank; \
|
||||
u32 _ring = ring; \
|
||||
dma_addr_t _value = value; \
|
||||
u32 l_base = 0, u_base = 0; \
|
||||
l_base = lower_32_bits(_value); \
|
||||
u_base = upper_32_bits(_value); \
|
||||
ADF_CSR_WR((_csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (_bank) + \
|
||||
ADF_RING_CSR_RING_LBASE + ((_ring) << 2), l_base); \
|
||||
ADF_CSR_WR((_csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (_bank) + \
|
||||
ADF_RING_CSR_RING_UBASE + ((_ring) << 2), u_base); \
|
||||
} while (0)
|
||||
|
||||
#define WRITE_CSR_RING_HEAD(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_HEAD + ((ring) << 2), value)
|
||||
#define WRITE_CSR_RING_TAIL(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_TAIL + ((ring) << 2), value)
|
||||
#define WRITE_CSR_INT_FLAG(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_FLAG, (value))
|
||||
#define WRITE_CSR_INT_SRCSEL(csr_base_addr, bank) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_SRCSEL, ADF_BANK_INT_SRC_SEL_MASK)
|
||||
#define WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_COL_EN, (value))
|
||||
#define WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_COL_CTL, \
|
||||
ADF_RING_CSR_INT_COL_CTL_ENABLE | (value))
|
||||
#define WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_FLAG_AND_COL, (value))
|
||||
|
||||
#define WRITE_CSR_RING_SRV_ARB_EN(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_SRV_ARB_EN, (value))
|
||||
|
||||
void adf_gen4_init_hw_csr_ops(struct adf_hw_csr_ops *csr_ops);
|
||||
|
||||
#endif
|
@ -8,103 +8,6 @@
|
||||
#include "adf_gen4_hw_data.h"
|
||||
#include "adf_gen4_pm.h"
|
||||
|
||||
static u64 build_csr_ring_base_addr(dma_addr_t addr, u32 size)
|
||||
{
|
||||
return BUILD_RING_BASE_ADDR(addr, size);
|
||||
}
|
||||
|
||||
static u32 read_csr_ring_head(void __iomem *csr_base_addr, u32 bank, u32 ring)
|
||||
{
|
||||
return READ_CSR_RING_HEAD(csr_base_addr, bank, ring);
|
||||
}
|
||||
|
||||
static void write_csr_ring_head(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_HEAD(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static u32 read_csr_ring_tail(void __iomem *csr_base_addr, u32 bank, u32 ring)
|
||||
{
|
||||
return READ_CSR_RING_TAIL(csr_base_addr, bank, ring);
|
||||
}
|
||||
|
||||
static void write_csr_ring_tail(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_TAIL(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static u32 read_csr_e_stat(void __iomem *csr_base_addr, u32 bank)
|
||||
{
|
||||
return READ_CSR_E_STAT(csr_base_addr, bank);
|
||||
}
|
||||
|
||||
static void write_csr_ring_config(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value);
|
||||
}
|
||||
|
||||
static void write_csr_ring_base(void __iomem *csr_base_addr, u32 bank, u32 ring,
|
||||
dma_addr_t addr)
|
||||
{
|
||||
WRITE_CSR_RING_BASE(csr_base_addr, bank, ring, addr);
|
||||
}
|
||||
|
||||
static void write_csr_int_flag(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_FLAG(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_srcsel(void __iomem *csr_base_addr, u32 bank)
|
||||
{
|
||||
WRITE_CSR_INT_SRCSEL(csr_base_addr, bank);
|
||||
}
|
||||
|
||||
static void write_csr_int_col_en(void __iomem *csr_base_addr, u32 bank, u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_col_ctl(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_int_flag_and_col(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
static void write_csr_ring_srv_arb_en(void __iomem *csr_base_addr, u32 bank,
|
||||
u32 value)
|
||||
{
|
||||
WRITE_CSR_RING_SRV_ARB_EN(csr_base_addr, bank, value);
|
||||
}
|
||||
|
||||
void adf_gen4_init_hw_csr_ops(struct adf_hw_csr_ops *csr_ops)
|
||||
{
|
||||
csr_ops->build_csr_ring_base_addr = build_csr_ring_base_addr;
|
||||
csr_ops->read_csr_ring_head = read_csr_ring_head;
|
||||
csr_ops->write_csr_ring_head = write_csr_ring_head;
|
||||
csr_ops->read_csr_ring_tail = read_csr_ring_tail;
|
||||
csr_ops->write_csr_ring_tail = write_csr_ring_tail;
|
||||
csr_ops->read_csr_e_stat = read_csr_e_stat;
|
||||
csr_ops->write_csr_ring_config = write_csr_ring_config;
|
||||
csr_ops->write_csr_ring_base = write_csr_ring_base;
|
||||
csr_ops->write_csr_int_flag = write_csr_int_flag;
|
||||
csr_ops->write_csr_int_srcsel = write_csr_int_srcsel;
|
||||
csr_ops->write_csr_int_col_en = write_csr_int_col_en;
|
||||
csr_ops->write_csr_int_col_ctl = write_csr_int_col_ctl;
|
||||
csr_ops->write_csr_int_flag_and_col = write_csr_int_flag_and_col;
|
||||
csr_ops->write_csr_ring_srv_arb_en = write_csr_ring_srv_arb_en;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(adf_gen4_init_hw_csr_ops);
|
||||
|
||||
u32 adf_gen4_get_accel_mask(struct adf_hw_device_data *self)
|
||||
{
|
||||
return ADF_GEN4_ACCELERATORS_MASK;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
|
||||
/* Copyright(c) 2020 Intel Corporation */
|
||||
#ifndef ADF_GEN4_HW_CSR_DATA_H_
|
||||
#define ADF_GEN4_HW_CSR_DATA_H_
|
||||
#ifndef ADF_GEN4_HW_DATA_H_
|
||||
#define ADF_GEN4_HW_DATA_H_
|
||||
|
||||
#include <linux/units.h>
|
||||
|
||||
@ -54,95 +54,6 @@
|
||||
#define ADF_GEN4_ADMINMSGLR_OFFSET 0x500578
|
||||
#define ADF_GEN4_MAILBOX_BASE_OFFSET 0x600970
|
||||
|
||||
/* Transport access */
|
||||
#define ADF_BANK_INT_SRC_SEL_MASK 0x44UL
|
||||
#define ADF_RING_CSR_RING_CONFIG 0x1000
|
||||
#define ADF_RING_CSR_RING_LBASE 0x1040
|
||||
#define ADF_RING_CSR_RING_UBASE 0x1080
|
||||
#define ADF_RING_CSR_RING_HEAD 0x0C0
|
||||
#define ADF_RING_CSR_RING_TAIL 0x100
|
||||
#define ADF_RING_CSR_E_STAT 0x14C
|
||||
#define ADF_RING_CSR_INT_FLAG 0x170
|
||||
#define ADF_RING_CSR_INT_SRCSEL 0x174
|
||||
#define ADF_RING_CSR_INT_COL_CTL 0x180
|
||||
#define ADF_RING_CSR_INT_FLAG_AND_COL 0x184
|
||||
#define ADF_RING_CSR_INT_COL_CTL_ENABLE 0x80000000
|
||||
#define ADF_RING_CSR_INT_COL_EN 0x17C
|
||||
#define ADF_RING_CSR_ADDR_OFFSET 0x100000
|
||||
#define ADF_RING_BUNDLE_SIZE 0x2000
|
||||
|
||||
#define BUILD_RING_BASE_ADDR(addr, size) \
|
||||
((((addr) >> 6) & (GENMASK_ULL(63, 0) << (size))) << 6)
|
||||
#define READ_CSR_RING_HEAD(csr_base_addr, bank, ring) \
|
||||
ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_HEAD + ((ring) << 2))
|
||||
#define READ_CSR_RING_TAIL(csr_base_addr, bank, ring) \
|
||||
ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_TAIL + ((ring) << 2))
|
||||
#define READ_CSR_E_STAT(csr_base_addr, bank) \
|
||||
ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_E_STAT)
|
||||
#define WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_CONFIG + ((ring) << 2), value)
|
||||
#define WRITE_CSR_RING_BASE(csr_base_addr, bank, ring, value) \
|
||||
do { \
|
||||
void __iomem *_csr_base_addr = csr_base_addr; \
|
||||
u32 _bank = bank; \
|
||||
u32 _ring = ring; \
|
||||
dma_addr_t _value = value; \
|
||||
u32 l_base = 0, u_base = 0; \
|
||||
l_base = lower_32_bits(_value); \
|
||||
u_base = upper_32_bits(_value); \
|
||||
ADF_CSR_WR((_csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (_bank) + \
|
||||
ADF_RING_CSR_RING_LBASE + ((_ring) << 2), l_base); \
|
||||
ADF_CSR_WR((_csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (_bank) + \
|
||||
ADF_RING_CSR_RING_UBASE + ((_ring) << 2), u_base); \
|
||||
} while (0)
|
||||
|
||||
#define WRITE_CSR_RING_HEAD(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_HEAD + ((ring) << 2), value)
|
||||
#define WRITE_CSR_RING_TAIL(csr_base_addr, bank, ring, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_TAIL + ((ring) << 2), value)
|
||||
#define WRITE_CSR_INT_FLAG(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_FLAG, (value))
|
||||
#define WRITE_CSR_INT_SRCSEL(csr_base_addr, bank) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_SRCSEL, ADF_BANK_INT_SRC_SEL_MASK)
|
||||
#define WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_COL_EN, (value))
|
||||
#define WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_COL_CTL, \
|
||||
ADF_RING_CSR_INT_COL_CTL_ENABLE | (value))
|
||||
#define WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_INT_FLAG_AND_COL, (value))
|
||||
|
||||
/* Arbiter configuration */
|
||||
#define ADF_RING_CSR_RING_SRV_ARB_EN 0x19C
|
||||
|
||||
#define WRITE_CSR_RING_SRV_ARB_EN(csr_base_addr, bank, value) \
|
||||
ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \
|
||||
ADF_RING_BUNDLE_SIZE * (bank) + \
|
||||
ADF_RING_CSR_RING_SRV_ARB_EN, (value))
|
||||
|
||||
/* Default ring mapping */
|
||||
#define ADF_GEN4_DEFAULT_RING_TO_SRV_MAP \
|
||||
(ASYM << ADF_CFG_SERV_RING_PAIR_0_SHIFT | \
|
||||
@ -234,7 +145,6 @@ u32 adf_gen4_get_num_aes(struct adf_hw_device_data *self);
|
||||
enum dev_sku_info adf_gen4_get_sku(struct adf_hw_device_data *self);
|
||||
u32 adf_gen4_get_sram_bar_id(struct adf_hw_device_data *self);
|
||||
int adf_gen4_init_device(struct adf_accel_dev *accel_dev);
|
||||
void adf_gen4_init_hw_csr_ops(struct adf_hw_csr_ops *csr_ops);
|
||||
int adf_gen4_ring_pair_reset(struct adf_accel_dev *accel_dev, u32 bank_number);
|
||||
void adf_gen4_set_msix_default_rttable(struct adf_accel_dev *accel_dev);
|
||||
void adf_gen4_set_ssm_wdtimer(struct adf_accel_dev *accel_dev);
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include <adf_common_drv.h>
|
||||
#include <adf_gen2_config.h>
|
||||
#include <adf_gen2_dc.h>
|
||||
#include <adf_gen2_hw_csr_data.h>
|
||||
#include <adf_gen2_hw_data.h>
|
||||
#include <adf_gen2_pfvf.h>
|
||||
#include "adf_dh895xcc_hw_data.h"
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <adf_common_drv.h>
|
||||
#include <adf_gen2_config.h>
|
||||
#include <adf_gen2_dc.h>
|
||||
#include <adf_gen2_hw_csr_data.h>
|
||||
#include <adf_gen2_hw_data.h>
|
||||
#include <adf_gen2_pfvf.h>
|
||||
#include <adf_pfvf_vf_msg.h>
|
||||
|
Loading…
Reference in New Issue
Block a user