summaryrefslogtreecommitdiffstats
path: root/drivers/crypto/qat/qat_c62x
diff options
context:
space:
mode:
authorMarco Chiappero <marco.chiappero@intel.com>2021-09-28 12:44:32 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2021-10-08 20:02:40 +0800
commit993161d36ab5f0f8064751f157482d332a8fcf2c (patch)
tree4f23395d5dee0080c6f3d86839f599209c7d27e2 /drivers/crypto/qat/qat_c62x
parente17f49bb244a281fe39bfdad0306a38b3a02e7bf (diff)
downloadlinux-993161d36ab5f0f8064751f157482d332a8fcf2c.tar.gz
linux-993161d36ab5f0f8064751f157482d332a8fcf2c.tar.bz2
linux-993161d36ab5f0f8064751f157482d332a8fcf2c.zip
crypto: qat - fix handling of VF to PF interrupts
Currently, VF to PF interrupt handling is based on the DH895XCC device behavior, which is not entirely common to all devices. In order to make interrupt detection and handling correct for all of the supported devices, make the interrupt handling device specific by: - introducing get_vf2pf_sources() for getting a 32 bits long value where each bit represents a vf2pf interrupt; - adding the device [enable|disable]_vf2pf_interrupts to hw_data; - defining [enable|disable]_vf2pf_interrupts for all the devices that are currently supported, using only their required and specific ERRSOU|ERRMASK registers (DH895XCC has 32 interrupts spread across ERRSOU3 and ERRSOU5, C62X/C3XXX has 16 in ERRSOU3 only, etc). Code has been shared by different devices wherever possible. This patch is based on earlier work done by Salvatore Benedetto. Signed-off-by: Marco Chiappero <marco.chiappero@intel.com> Co-developed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com> Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/qat/qat_c62x')
-rw-r--r--drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c b/drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c
index b023c80873bb..f28dae0982bc 100644
--- a/drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c
+++ b/drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c
@@ -208,6 +208,9 @@ void adf_init_hw_data_c62x(struct adf_hw_device_data *hw_data)
hw_data->reset_device = adf_reset_flr;
hw_data->set_ssm_wdtimer = adf_gen2_set_ssm_wdtimer;
hw_data->get_pf2vf_offset = get_pf2vf_offset;
+ hw_data->get_vf2pf_sources = adf_gen2_get_vf2pf_sources;
+ hw_data->enable_vf2pf_interrupts = adf_gen2_enable_vf2pf_interrupts;
+ hw_data->disable_vf2pf_interrupts = adf_gen2_disable_vf2pf_interrupts;
hw_data->enable_pfvf_comms = adf_enable_pf2vf_comms;
hw_data->disable_iov = adf_disable_sriov;
hw_data->min_iov_compat_ver = ADF_PFVF_COMPAT_THIS_VERSION;