178ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */ 2*ded037e6SHareshx Sankar Raj /* Copyright(c) 2007-2025 Intel Corporation */ 378ee8d1cSJulian Grajkowski #ifndef ADF_CFG_COMMON_H_ 478ee8d1cSJulian Grajkowski #define ADF_CFG_COMMON_H_ 578ee8d1cSJulian Grajkowski 678ee8d1cSJulian Grajkowski #include <sys/types.h> 778ee8d1cSJulian Grajkowski #include <sys/ioccom.h> 878ee8d1cSJulian Grajkowski #include <sys/cpuset.h> 978ee8d1cSJulian Grajkowski 1078ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_STR_LEN 128 1178ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_KEY_LEN_IN_BYTES ADF_CFG_MAX_STR_LEN 1278ee8d1cSJulian Grajkowski /* 1378ee8d1cSJulian Grajkowski * Max value length increased to 128 to support more length of values. 1478ee8d1cSJulian Grajkowski * like Dc0CoreAffinity = 0, 1, 2,... config values to max cores 1578ee8d1cSJulian Grajkowski */ 1678ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_VAL_LEN_IN_BYTES 128 1778ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_SECTION_LEN_IN_BYTES ADF_CFG_MAX_STR_LEN 1878ee8d1cSJulian Grajkowski #define ADF_CFG_NULL_TERM_SIZE 1 1978ee8d1cSJulian Grajkowski #define ADF_CFG_BASE_DEC 10 2078ee8d1cSJulian Grajkowski #define ADF_CFG_BASE_HEX 16 2178ee8d1cSJulian Grajkowski #define ADF_CFG_ALL_DEVICES 0xFFFE 2278ee8d1cSJulian Grajkowski #define ADF_CFG_NO_DEVICE 0xFFFF 2378ee8d1cSJulian Grajkowski #define ADF_CFG_AFFINITY_WHATEVER 0xFF 2478ee8d1cSJulian Grajkowski #define MAX_DEVICE_NAME_SIZE 32 2578ee8d1cSJulian Grajkowski #define ADF_MAX_DEVICES (32 * 32) 2678ee8d1cSJulian Grajkowski #define ADF_MAX_ACCELENGINES 12 2778ee8d1cSJulian Grajkowski #define ADF_CFG_STORAGE_ENABLED 1 2878ee8d1cSJulian Grajkowski #define ADF_DEVS_ARRAY_SIZE BITS_TO_LONGS(ADF_MAX_DEVICES) 29a977168cSMichal Gulbicki #define ADF_GEN2_SSM_WDT_PKE_DEFAULT_VALUE 0x3000000 3078ee8d1cSJulian Grajkowski #define ADF_WDT_TIMER_SYM_COMP_MS 3 3178ee8d1cSJulian Grajkowski #define ADF_MIN_HB_TIMER_MS 100 3278ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_NUM_OF_SECTIONS 16 3378ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_NUM_OF_TOKENS 16 3478ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_TOKENS_IN_CONFIG 8 3578ee8d1cSJulian Grajkowski #define ADF_CFG_RESP_POLL 1 3678ee8d1cSJulian Grajkowski #define ADF_CFG_RESP_EPOLL 2 3778ee8d1cSJulian Grajkowski #define ADF_CFG_DEF_CY_RING_ASYM_SIZE 64 3878ee8d1cSJulian Grajkowski #define ADF_CFG_DEF_CY_RING_SYM_SIZE 512 3978ee8d1cSJulian Grajkowski #define ADF_CFG_DEF_DC_RING_SIZE 512 4078ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_CORE_NUM 256 4178ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_TOKENS ADF_CFG_MAX_CORE_NUM 4278ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_TOKEN_LEN 10 4378ee8d1cSJulian Grajkowski #define ADF_CFG_ACCEL_DEF_COALES 1 4478ee8d1cSJulian Grajkowski #define ADF_CFG_ACCEL_DEF_COALES_TIMER 10000 4578ee8d1cSJulian Grajkowski #define ADF_CFG_ACCEL_DEF_COALES_NUM_MSG 0 4678ee8d1cSJulian Grajkowski #define ADF_CFG_ASYM_SRV_MASK 1 4778ee8d1cSJulian Grajkowski #define ADF_CFG_SYM_SRV_MASK 2 4878ee8d1cSJulian Grajkowski #define ADF_CFG_DC_SRV_MASK 8 4978ee8d1cSJulian Grajkowski #define ADF_CFG_UNKNOWN_SRV_MASK 0 5078ee8d1cSJulian Grajkowski #define ADF_CFG_DEF_ASYM_MASK 0x03 5178ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_SERVICES 4 5278ee8d1cSJulian Grajkowski #define ADF_MAX_SERVICES 3 5378ee8d1cSJulian Grajkowski 5478ee8d1cSJulian Grajkowski enum adf_svc_type { 5578ee8d1cSJulian Grajkowski ADF_SVC_ASYM = 0, 5678ee8d1cSJulian Grajkowski ADF_SVC_SYM = 1, 5778ee8d1cSJulian Grajkowski ADF_SVC_DC = 2, 5878ee8d1cSJulian Grajkowski ADF_SVC_NONE = 3 5978ee8d1cSJulian Grajkowski }; 6078ee8d1cSJulian Grajkowski 6178ee8d1cSJulian Grajkowski struct adf_pci_address { 6278ee8d1cSJulian Grajkowski unsigned char bus; 6378ee8d1cSJulian Grajkowski unsigned char dev; 6478ee8d1cSJulian Grajkowski unsigned char func; 65*ded037e6SHareshx Sankar Raj }; 6678ee8d1cSJulian Grajkowski 6778ee8d1cSJulian Grajkowski #define ADF_CFG_SERV_RING_PAIR_0_SHIFT 0 6878ee8d1cSJulian Grajkowski #define ADF_CFG_SERV_RING_PAIR_1_SHIFT 3 6978ee8d1cSJulian Grajkowski #define ADF_CFG_SERV_RING_PAIR_2_SHIFT 6 7078ee8d1cSJulian Grajkowski #define ADF_CFG_SERV_RING_PAIR_3_SHIFT 9 7178ee8d1cSJulian Grajkowski 7278ee8d1cSJulian Grajkowski enum adf_cfg_service_type { NA = 0, CRYPTO, COMP, SYM, ASYM, USED }; 7378ee8d1cSJulian Grajkowski 7478ee8d1cSJulian Grajkowski enum adf_cfg_bundle_type { FREE, KERNEL, USER }; 7578ee8d1cSJulian Grajkowski 7678ee8d1cSJulian Grajkowski enum adf_cfg_val_type { ADF_DEC, ADF_HEX, ADF_STR }; 7778ee8d1cSJulian Grajkowski 7878ee8d1cSJulian Grajkowski enum adf_device_type { 7978ee8d1cSJulian Grajkowski DEV_UNKNOWN = 0, 8078ee8d1cSJulian Grajkowski DEV_DH895XCC, 8178ee8d1cSJulian Grajkowski DEV_DH895XCCVF, 8278ee8d1cSJulian Grajkowski DEV_C62X, 8378ee8d1cSJulian Grajkowski DEV_C62XVF, 8478ee8d1cSJulian Grajkowski DEV_C3XXX, 8578ee8d1cSJulian Grajkowski DEV_C3XXXVF, 8678ee8d1cSJulian Grajkowski DEV_200XX, 8778ee8d1cSJulian Grajkowski DEV_200XXVF, 8878ee8d1cSJulian Grajkowski DEV_C4XXX, 89a977168cSMichal Gulbicki DEV_C4XXXVF, 90266b0663SKrzysztof Zdziarski DEV_D15XX, 91266b0663SKrzysztof Zdziarski DEV_D15XXVF, 92266b0663SKrzysztof Zdziarski DEV_4XXX, 93266b0663SKrzysztof Zdziarski DEV_4XXXVF 9478ee8d1cSJulian Grajkowski }; 9578ee8d1cSJulian Grajkowski 9678ee8d1cSJulian Grajkowski enum adf_cfg_fw_image_type { 9778ee8d1cSJulian Grajkowski ADF_FW_IMAGE_DEFAULT = 0, 9878ee8d1cSJulian Grajkowski ADF_FW_IMAGE_CRYPTO, 9978ee8d1cSJulian Grajkowski ADF_FW_IMAGE_COMPRESSION, 10078ee8d1cSJulian Grajkowski ADF_FW_IMAGE_CUSTOM1 10178ee8d1cSJulian Grajkowski }; 10278ee8d1cSJulian Grajkowski 10378ee8d1cSJulian Grajkowski struct adf_dev_status_info { 10478ee8d1cSJulian Grajkowski enum adf_device_type type; 10578ee8d1cSJulian Grajkowski uint16_t accel_id; 10678ee8d1cSJulian Grajkowski uint16_t instance_id; 10778ee8d1cSJulian Grajkowski uint8_t num_ae; 10878ee8d1cSJulian Grajkowski uint8_t num_accel; 10978ee8d1cSJulian Grajkowski uint8_t num_logical_accel; 11078ee8d1cSJulian Grajkowski uint8_t banks_per_accel; 11178ee8d1cSJulian Grajkowski uint8_t state; 11278ee8d1cSJulian Grajkowski uint8_t bus; 11378ee8d1cSJulian Grajkowski uint8_t dev; 11478ee8d1cSJulian Grajkowski uint8_t fun; 11578ee8d1cSJulian Grajkowski int domain; 11678ee8d1cSJulian Grajkowski char name[MAX_DEVICE_NAME_SIZE]; 11778ee8d1cSJulian Grajkowski u8 sku; 11878ee8d1cSJulian Grajkowski u32 node_id; 11978ee8d1cSJulian Grajkowski u32 device_mem_available; 12078ee8d1cSJulian Grajkowski u32 pci_device_id; 12178ee8d1cSJulian Grajkowski }; 12278ee8d1cSJulian Grajkowski 12378ee8d1cSJulian Grajkowski struct adf_cfg_device { 12478ee8d1cSJulian Grajkowski /* contains all the bundles info */ 12578ee8d1cSJulian Grajkowski struct adf_cfg_bundle **bundles; 12678ee8d1cSJulian Grajkowski /* contains all the instances info */ 12778ee8d1cSJulian Grajkowski struct adf_cfg_instance **instances; 12878ee8d1cSJulian Grajkowski int bundle_num; 12978ee8d1cSJulian Grajkowski int instance_index; 13078ee8d1cSJulian Grajkowski char name[ADF_CFG_MAX_STR_LEN]; 13178ee8d1cSJulian Grajkowski int dev_id; 13278ee8d1cSJulian Grajkowski int max_kernel_bundle_nr; 13378ee8d1cSJulian Grajkowski u16 total_num_inst; 13478ee8d1cSJulian Grajkowski }; 13578ee8d1cSJulian Grajkowski 13678ee8d1cSJulian Grajkowski enum adf_accel_serv_type { 13778ee8d1cSJulian Grajkowski ADF_ACCEL_SERV_NA = 0x0, 13878ee8d1cSJulian Grajkowski ADF_ACCEL_SERV_ASYM, 13978ee8d1cSJulian Grajkowski ADF_ACCEL_SERV_SYM, 14078ee8d1cSJulian Grajkowski ADF_ACCEL_SERV_RND, 14178ee8d1cSJulian Grajkowski ADF_ACCEL_SERV_DC 14278ee8d1cSJulian Grajkowski }; 14378ee8d1cSJulian Grajkowski 14478ee8d1cSJulian Grajkowski struct adf_cfg_ring { 14578ee8d1cSJulian Grajkowski u8 mode : 1; 14678ee8d1cSJulian Grajkowski enum adf_accel_serv_type serv_type; 14778ee8d1cSJulian Grajkowski u8 number : 4; 14878ee8d1cSJulian Grajkowski }; 14978ee8d1cSJulian Grajkowski 15078ee8d1cSJulian Grajkowski struct adf_cfg_bundle { 15178ee8d1cSJulian Grajkowski /* Section(s) name this bundle is shared by */ 15278ee8d1cSJulian Grajkowski char **sections; 15378ee8d1cSJulian Grajkowski int max_section; 15478ee8d1cSJulian Grajkowski int section_index; 15578ee8d1cSJulian Grajkowski int number; 15678ee8d1cSJulian Grajkowski enum adf_cfg_bundle_type type; 15778ee8d1cSJulian Grajkowski cpuset_t affinity_mask; 15878ee8d1cSJulian Grajkowski int polling_mode; 15978ee8d1cSJulian Grajkowski int instance_num; 16078ee8d1cSJulian Grajkowski int num_of_rings; 16178ee8d1cSJulian Grajkowski /* contains all the info about rings */ 16278ee8d1cSJulian Grajkowski struct adf_cfg_ring **rings; 16378ee8d1cSJulian Grajkowski u16 in_use; 164a977168cSMichal Gulbicki u16 max_cfg_svc_num; 16578ee8d1cSJulian Grajkowski }; 16678ee8d1cSJulian Grajkowski 16778ee8d1cSJulian Grajkowski struct adf_cfg_instance { 16878ee8d1cSJulian Grajkowski enum adf_cfg_service_type stype; 16978ee8d1cSJulian Grajkowski char name[ADF_CFG_MAX_STR_LEN]; 17078ee8d1cSJulian Grajkowski int polling_mode; 17178ee8d1cSJulian Grajkowski cpuset_t affinity_mask; 17278ee8d1cSJulian Grajkowski /* rings within an instance for services */ 17378ee8d1cSJulian Grajkowski int asym_tx; 17478ee8d1cSJulian Grajkowski int asym_rx; 17578ee8d1cSJulian Grajkowski int sym_tx; 17678ee8d1cSJulian Grajkowski int sym_rx; 17778ee8d1cSJulian Grajkowski int dc_tx; 17878ee8d1cSJulian Grajkowski int dc_rx; 17978ee8d1cSJulian Grajkowski int bundle; 18078ee8d1cSJulian Grajkowski }; 18178ee8d1cSJulian Grajkowski 18278ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_CORE_NUM 256 18378ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_TOKENS_IN_CONFIG 8 18478ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_TOKEN_LEN 10 18578ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_TOKENS ADF_CFG_MAX_CORE_NUM 18678ee8d1cSJulian Grajkowski #define ADF_CFG_ACCEL_DEF_COALES 1 18778ee8d1cSJulian Grajkowski #define ADF_CFG_ACCEL_DEF_COALES_TIMER 10000 18878ee8d1cSJulian Grajkowski #define ADF_CFG_ACCEL_DEF_COALES_NUM_MSG 0 18978ee8d1cSJulian Grajkowski #define ADF_CFG_RESP_EPOLL 2 19078ee8d1cSJulian Grajkowski #define ADF_CFG_SERV_RING_PAIR_1_SHIFT 3 19178ee8d1cSJulian Grajkowski #define ADF_CFG_SERV_RING_PAIR_2_SHIFT 6 19278ee8d1cSJulian Grajkowski #define ADF_CFG_SERV_RING_PAIR_3_SHIFT 9 19378ee8d1cSJulian Grajkowski #define ADF_CFG_RESP_POLL 1 19478ee8d1cSJulian Grajkowski #define ADF_CFG_ASYM_SRV_MASK 1 19578ee8d1cSJulian Grajkowski #define ADF_CFG_SYM_SRV_MASK 2 19678ee8d1cSJulian Grajkowski #define ADF_CFG_DC_SRV_MASK 8 19778ee8d1cSJulian Grajkowski #define ADF_CFG_UNKNOWN_SRV_MASK 0 19878ee8d1cSJulian Grajkowski #define ADF_CFG_DEF_ASYM_MASK 0x03 19978ee8d1cSJulian Grajkowski #define ADF_CFG_MAX_SERVICES 4 20078ee8d1cSJulian Grajkowski 201266b0663SKrzysztof Zdziarski #define ADF_CTL_IOC_MAGIC 'a' 202266b0663SKrzysztof Zdziarski #define IOCTL_STATUS_ACCEL_DEV \ 203266b0663SKrzysztof Zdziarski _IOWR(ADF_CTL_IOC_MAGIC, 3, struct adf_dev_status_info) 204266b0663SKrzysztof Zdziarski #define IOCTL_RESERVE_RING \ 205266b0663SKrzysztof Zdziarski _IOWR(ADF_CTL_IOC_MAGIC, 10, struct adf_user_reserve_ring) 206266b0663SKrzysztof Zdziarski #define IOCTL_RELEASE_RING \ 207266b0663SKrzysztof Zdziarski _IOWR(ADF_CTL_IOC_MAGIC, 11, struct adf_user_reserve_ring) 208266b0663SKrzysztof Zdziarski #define IOCTL_ENABLE_RING \ 209266b0663SKrzysztof Zdziarski _IOWR(ADF_CTL_IOC_MAGIC, 12, struct adf_user_reserve_ring) 210266b0663SKrzysztof Zdziarski #define IOCTL_DISABLE_RING \ 211266b0663SKrzysztof Zdziarski _IOWR(ADF_CTL_IOC_MAGIC, 13, struct adf_user_reserve_ring) 212266b0663SKrzysztof Zdziarski #define IOCTL_GET_NUM_DEVICES _IOR(ADF_CTL_IOC_MAGIC, 4, int32_t) 21378ee8d1cSJulian Grajkowski #define ADF_CFG_HB_DEFAULT_VALUE 500 21478ee8d1cSJulian Grajkowski #define ADF_CFG_HB_COUNT_THRESHOLD 3 21578ee8d1cSJulian Grajkowski #define ADF_MIN_HB_TIMER_MS 100 216266b0663SKrzysztof Zdziarski #define IOCTL_GET_CFG_VAL \ 217266b0663SKrzysztof Zdziarski _IOW(ADF_CTL_IOC_MAGIC, 5, struct adf_user_cfg_ctl_data) 21878ee8d1cSJulian Grajkowski 21978ee8d1cSJulian Grajkowski enum adf_device_heartbeat_status { 22078ee8d1cSJulian Grajkowski DEV_HB_UNRESPONSIVE = 0, 22178ee8d1cSJulian Grajkowski DEV_HB_ALIVE, 22278ee8d1cSJulian Grajkowski DEV_HB_UNSUPPORTED 22378ee8d1cSJulian Grajkowski }; 22478ee8d1cSJulian Grajkowski 22578ee8d1cSJulian Grajkowski struct adf_dev_heartbeat_status_ctl { 22678ee8d1cSJulian Grajkowski uint16_t device_id; 22778ee8d1cSJulian Grajkowski enum adf_device_heartbeat_status status; 22878ee8d1cSJulian Grajkowski }; 229266b0663SKrzysztof Zdziarski #define IOCTL_HEARTBEAT_ACCEL_DEV \ 230266b0663SKrzysztof Zdziarski _IOWR(ADF_CTL_IOC_MAGIC, 9, struct adf_dev_heartbeat_status_ctl) 23178ee8d1cSJulian Grajkowski #endif 232