11532e31fSGiovanni Cabiddu // SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) 209ce899aSMarco Chiappero /* Copyright(c) 2015 - 2021 Intel Corporation */ 3dd0f3683STadeusz Struk #include <adf_accel_devices.h> 4dd0f3683STadeusz Struk #include <adf_common_drv.h> 593b2f579SGiovanni Cabiddu #include <adf_gen2_config.h> 6680302d1SGiovanni Cabiddu #include <adf_gen2_hw_csr_data.h> 7f9c697c4SGiovanni Cabiddu #include <adf_gen2_hw_data.h> 87e00fb3fSMarco Chiappero #include <adf_gen2_pfvf.h> 909ce899aSMarco Chiappero #include <adf_pfvf_vf_msg.h> 10dd0f3683STadeusz Struk #include "adf_dh895xccvf_hw_data.h" 11dd0f3683STadeusz Struk 12dd0f3683STadeusz Struk static struct adf_hw_device_class dh895xcciov_class = { 13dd0f3683STadeusz Struk .name = ADF_DH895XCCVF_DEVICE_NAME, 14dd0f3683STadeusz Struk .type = DEV_DH895XCCVF, 15dd0f3683STadeusz Struk }; 16dd0f3683STadeusz Struk get_accel_mask(struct adf_hw_device_data * self)177b07ed50SGiovanni Cabiddustatic u32 get_accel_mask(struct adf_hw_device_data *self) 18dd0f3683STadeusz Struk { 19dd0f3683STadeusz Struk return ADF_DH895XCCIOV_ACCELERATORS_MASK; 20dd0f3683STadeusz Struk } 21dd0f3683STadeusz Struk get_ae_mask(struct adf_hw_device_data * self)227b07ed50SGiovanni Cabiddustatic u32 get_ae_mask(struct adf_hw_device_data *self) 23dd0f3683STadeusz Struk { 24dd0f3683STadeusz Struk return ADF_DH895XCCIOV_ACCELENGINES_MASK; 25dd0f3683STadeusz Struk } 26dd0f3683STadeusz Struk get_num_accels(struct adf_hw_device_data * self)27dd0f3683STadeusz Strukstatic u32 get_num_accels(struct adf_hw_device_data *self) 28dd0f3683STadeusz Struk { 29dd0f3683STadeusz Struk return ADF_DH895XCCIOV_MAX_ACCELERATORS; 30dd0f3683STadeusz Struk } 31dd0f3683STadeusz Struk get_num_aes(struct adf_hw_device_data * self)32dd0f3683STadeusz Strukstatic u32 get_num_aes(struct adf_hw_device_data *self) 33dd0f3683STadeusz Struk { 34dd0f3683STadeusz Struk return ADF_DH895XCCIOV_MAX_ACCELENGINES; 35dd0f3683STadeusz Struk } 36dd0f3683STadeusz Struk get_misc_bar_id(struct adf_hw_device_data * self)37dd0f3683STadeusz Strukstatic u32 get_misc_bar_id(struct adf_hw_device_data *self) 38dd0f3683STadeusz Struk { 39dd0f3683STadeusz Struk return ADF_DH895XCCIOV_PMISC_BAR; 40dd0f3683STadeusz Struk } 41dd0f3683STadeusz Struk get_etr_bar_id(struct adf_hw_device_data * self)42dd0f3683STadeusz Strukstatic u32 get_etr_bar_id(struct adf_hw_device_data *self) 43dd0f3683STadeusz Struk { 44dd0f3683STadeusz Struk return ADF_DH895XCCIOV_ETR_BAR; 45dd0f3683STadeusz Struk } 46dd0f3683STadeusz Struk get_sku(struct adf_hw_device_data * self)47dd0f3683STadeusz Strukstatic enum dev_sku_info get_sku(struct adf_hw_device_data *self) 48dd0f3683STadeusz Struk { 49dd0f3683STadeusz Struk return DEV_SKU_VF; 50dd0f3683STadeusz Struk } 51dd0f3683STadeusz Struk adf_vf_int_noop(struct adf_accel_dev * accel_dev)52dd0f3683STadeusz Strukstatic int adf_vf_int_noop(struct adf_accel_dev *accel_dev) 53dd0f3683STadeusz Struk { 54dd0f3683STadeusz Struk return 0; 55dd0f3683STadeusz Struk } 56dd0f3683STadeusz Struk adf_vf_void_noop(struct adf_accel_dev * accel_dev)57dd0f3683STadeusz Strukstatic void adf_vf_void_noop(struct adf_accel_dev *accel_dev) 58dd0f3683STadeusz Struk { 59dd0f3683STadeusz Struk } 60dd0f3683STadeusz Struk adf_init_hw_data_dh895xcciov(struct adf_hw_device_data * hw_data)61dd0f3683STadeusz Strukvoid adf_init_hw_data_dh895xcciov(struct adf_hw_device_data *hw_data) 62dd0f3683STadeusz Struk { 63dd0f3683STadeusz Struk hw_data->dev_class = &dh895xcciov_class; 64dd0f3683STadeusz Struk hw_data->num_banks = ADF_DH895XCCIOV_ETR_MAX_BANKS; 6570b9bd39SAhsan Atta hw_data->num_rings_per_bank = ADF_ETR_MAX_RINGS_PER_BANK; 66dd0f3683STadeusz Struk hw_data->num_accel = ADF_DH895XCCIOV_MAX_ACCELERATORS; 67dd0f3683STadeusz Struk hw_data->num_logical_accel = 1; 68dd0f3683STadeusz Struk hw_data->num_engines = ADF_DH895XCCIOV_MAX_ACCELENGINES; 69dd0f3683STadeusz Struk hw_data->tx_rx_gap = ADF_DH895XCCIOV_RX_RINGS_OFFSET; 70dd0f3683STadeusz Struk hw_data->tx_rings_mask = ADF_DH895XCCIOV_TX_RINGS_MASK; 713a5b2a08SMarco Chiappero hw_data->ring_to_svc_map = ADF_GEN2_DEFAULT_RING_TO_SRV_MAP; 72d5cf4023STadeusz Struk hw_data->alloc_irq = adf_vf_isr_resource_alloc; 73d5cf4023STadeusz Struk hw_data->free_irq = adf_vf_isr_resource_free; 74dd0f3683STadeusz Struk hw_data->enable_error_correction = adf_vf_void_noop; 75dd0f3683STadeusz Struk hw_data->init_admin_comms = adf_vf_int_noop; 76dd0f3683STadeusz Struk hw_data->exit_admin_comms = adf_vf_void_noop; 77b90c1c4dSMarco Chiappero hw_data->send_admin_init = adf_vf2pf_notify_init; 78dd0f3683STadeusz Struk hw_data->init_arb = adf_vf_int_noop; 79dd0f3683STadeusz Struk hw_data->exit_arb = adf_vf_void_noop; 80b90c1c4dSMarco Chiappero hw_data->disable_iov = adf_vf2pf_notify_shutdown; 81dd0f3683STadeusz Struk hw_data->get_accel_mask = get_accel_mask; 82dd0f3683STadeusz Struk hw_data->get_ae_mask = get_ae_mask; 83dd0f3683STadeusz Struk hw_data->get_num_accels = get_num_accels; 84dd0f3683STadeusz Struk hw_data->get_num_aes = get_num_aes; 85dd0f3683STadeusz Struk hw_data->get_etr_bar_id = get_etr_bar_id; 86dd0f3683STadeusz Struk hw_data->get_misc_bar_id = get_misc_bar_id; 87dd0f3683STadeusz Struk hw_data->get_sku = get_sku; 88dd0f3683STadeusz Struk hw_data->enable_ints = adf_vf_void_noop; 891a72d3a6STadeusz Struk hw_data->dev_class->instances++; 9093b2f579SGiovanni Cabiddu hw_data->dev_config = adf_gen2_dev_config; 911a72d3a6STadeusz Struk adf_devmgr_update_class_index(hw_data); 92bc63dabeSMarco Chiappero adf_gen2_init_vf_pfvf_ops(&hw_data->pfvf_ops); 93f9c697c4SGiovanni Cabiddu adf_gen2_init_hw_csr_ops(&hw_data->csr_ops); 941198ae56SGiovanni Cabiddu adf_gen2_init_dc_ops(&hw_data->dc_ops); 95dd0f3683STadeusz Struk } 96dd0f3683STadeusz Struk adf_clean_hw_data_dh895xcciov(struct adf_hw_device_data * hw_data)97dd0f3683STadeusz Strukvoid adf_clean_hw_data_dh895xcciov(struct adf_hw_device_data *hw_data) 98dd0f3683STadeusz Struk { 99dd0f3683STadeusz Struk hw_data->dev_class->instances--; 1001a72d3a6STadeusz Struk adf_devmgr_update_class_index(hw_data); 101dd0f3683STadeusz Struk } 102