static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
-       u32 me_disable = self->fuses;
+       u32 me_disable = self->fuses[ADF_FUSECTL4];
 
        return ~me_disable & ADF_420XX_ACCELENGINES_MASK;
 }
 
        adf_init_hw_data_420xx(accel_dev->hw_device, ent->device);
 
        pci_read_config_byte(pdev, PCI_REVISION_ID, &accel_pci_dev->revid);
-       pci_read_config_dword(pdev, ADF_GEN4_FUSECTL4_OFFSET, &hw_data->fuses);
+       pci_read_config_dword(pdev, ADF_GEN4_FUSECTL4_OFFSET, &hw_data->fuses[ADF_FUSECTL4]);
 
        /* Get Accelerators and Accelerators Engines masks */
        hw_data->accel_mask = hw_data->get_accel_mask(hw_data);
 
 
 static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
-       u32 me_disable = self->fuses;
+       u32 me_disable = self->fuses[ADF_FUSECTL4];
 
        return ~me_disable & ADF_4XXX_ACCELENGINES_MASK;
 }
 
        adf_init_hw_data_4xxx(accel_dev->hw_device, ent->device);
 
        pci_read_config_byte(pdev, PCI_REVISION_ID, &accel_pci_dev->revid);
-       pci_read_config_dword(pdev, ADF_GEN4_FUSECTL4_OFFSET, &hw_data->fuses);
+       pci_read_config_dword(pdev, ADF_GEN4_FUSECTL4_OFFSET, &hw_data->fuses[ADF_FUSECTL4]);
 
        /* Get Accelerators and Accelerators Engines masks */
        hw_data->accel_mask = hw_data->get_accel_mask(hw_data);
 
 
 static u32 get_accel_mask(struct adf_hw_device_data *self)
 {
+       u32 fuses = self->fuses[ADF_FUSECTL0];
        u32 straps = self->straps;
-       u32 fuses = self->fuses;
        u32 accel;
 
        accel = ~(fuses | straps) >> ADF_C3XXX_ACCELERATORS_REG_OFFSET;
 
 static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
+       u32 fuses = self->fuses[ADF_FUSECTL0];
        u32 straps = self->straps;
-       u32 fuses = self->fuses;
        unsigned long disabled;
        u32 ae_disable;
        int accel;
 
        adf_init_hw_data_c3xxx(accel_dev->hw_device);
        pci_read_config_byte(pdev, PCI_REVISION_ID, &accel_pci_dev->revid);
        pci_read_config_dword(pdev, ADF_DEVICE_FUSECTL_OFFSET,
-                             &hw_data->fuses);
+                             &hw_data->fuses[ADF_FUSECTL0]);
        pci_read_config_dword(pdev, ADF_C3XXX_SOFTSTRAP_CSR_OFFSET,
                              &hw_data->straps);
 
 
 
 static u32 get_accel_mask(struct adf_hw_device_data *self)
 {
+       u32 fuses = self->fuses[ADF_FUSECTL0];
        u32 straps = self->straps;
-       u32 fuses = self->fuses;
        u32 accel;
 
        accel = ~(fuses | straps) >> ADF_C62X_ACCELERATORS_REG_OFFSET;
 
 static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
+       u32 fuses = self->fuses[ADF_FUSECTL0];
        u32 straps = self->straps;
-       u32 fuses = self->fuses;
        unsigned long disabled;
        u32 ae_disable;
        int accel;
 
        adf_init_hw_data_c62x(accel_dev->hw_device);
        pci_read_config_byte(pdev, PCI_REVISION_ID, &accel_pci_dev->revid);
        pci_read_config_dword(pdev, ADF_DEVICE_FUSECTL_OFFSET,
-                             &hw_data->fuses);
+                             &hw_data->fuses[ADF_FUSECTL0]);
        pci_read_config_dword(pdev, ADF_C62X_SOFTSTRAP_CSR_OFFSET,
                              &hw_data->straps);
 
        hw_data->accel_capabilities_mask = hw_data->get_accel_cap(accel_dev);
 
        /* Find and map all the device's BARS */
-       i = (hw_data->fuses & ADF_DEVICE_FUSECTL_MASK) ? 1 : 0;
+       i = (hw_data->fuses[ADF_FUSECTL0] & ADF_DEVICE_FUSECTL_MASK) ? 1 : 0;
        bar_mask = pci_select_bars(pdev, IORESOURCE_MEM);
        for_each_set_bit(bar_nr, &bar_mask, ADF_PCI_MAX_BARS * 2) {
                struct adf_bar *bar = &accel_pci_dev->pci_bars[i++];
 
        ADF_ACCEL_CAPABILITIES_RANDOM_NUMBER = 128
 };
 
+enum adf_fuses {
+       ADF_FUSECTL0,
+       ADF_FUSECTL1,
+       ADF_FUSECTL2,
+       ADF_FUSECTL3,
+       ADF_FUSECTL4,
+       ADF_FUSECTL5,
+       ADF_MAX_FUSES
+};
+
 struct adf_bar {
        resource_size_t base_addr;
        void __iomem *virt_addr;
        struct qat_migdev_ops vfmig_ops;
        const char *fw_name;
        const char *fw_mmp_name;
-       u32 fuses;
+       u32 fuses[ADF_MAX_FUSES];
        u32 straps;
        u32 accel_capabilities_mask;
        u32 extended_dc_capabilities;
 
 {
        struct adf_hw_device_data *hw_data = accel_dev->hw_device;
        struct pci_dev *pdev = accel_dev->accel_pci_dev.pci_dev;
+       u32 fuses = hw_data->fuses[ADF_FUSECTL0];
        u32 straps = hw_data->straps;
-       u32 fuses = hw_data->fuses;
        u32 legfuses;
        u32 capabilities = ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC |
                           ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC |
 
 
 static u32 get_accel_mask(struct adf_hw_device_data *self)
 {
-       u32 fuses = self->fuses;
+       u32 fuses = self->fuses[ADF_FUSECTL0];
 
        return ~fuses >> ADF_DH895XCC_ACCELERATORS_REG_OFFSET &
                         ADF_DH895XCC_ACCELERATORS_MASK;
 
 static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
-       u32 fuses = self->fuses;
+       u32 fuses = self->fuses[ADF_FUSECTL0];
 
        return ~fuses & ADF_DH895XCC_ACCELENGINES_MASK;
 }
 
 static enum dev_sku_info get_sku(struct adf_hw_device_data *self)
 {
-       int sku = (self->fuses & ADF_DH895XCC_FUSECTL_SKU_MASK)
+       int sku = (self->fuses[ADF_FUSECTL0] & ADF_DH895XCC_FUSECTL_SKU_MASK)
            >> ADF_DH895XCC_FUSECTL_SKU_SHIFT;
 
        switch (sku) {
 
        adf_init_hw_data_dh895xcc(accel_dev->hw_device);
        pci_read_config_byte(pdev, PCI_REVISION_ID, &accel_pci_dev->revid);
        pci_read_config_dword(pdev, ADF_DEVICE_FUSECTL_OFFSET,
-                             &hw_data->fuses);
+                             &hw_data->fuses[ADF_FUSECTL0]);
 
        /* Get Accelerators and Accelerators Engines masks */
        hw_data->accel_mask = hw_data->get_accel_mask(hw_data);