1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright(c) 2007-2022 Intel Corporation */
3 /* $FreeBSD$ */
4 /**
5  ***************************************************************************
6  * @file icp_sal_versions.h
7  *
8  * @defgroup SalVersions
9  *
10  * @ingroup SalVersions
11  *
12  * API and structures definition for obtaining software and hardware versions
13  *
14  ***************************************************************************/
15 
16 #ifndef _ICP_SAL_VERSIONS_H_
17 #define _ICP_SAL_VERSIONS_H_
18 
19 #define ICP_SAL_VERSIONS_FW_VERSION_SIZE 16
20 /**< Max length of firmware version string */
21 #define ICP_SAL_VERSIONS_SW_VERSION_SIZE 16
22 /**< Max length of software version string */
23 #define ICP_SAL_VERSIONS_MMP_VERSION_SIZE 16
24 /**< Max length of MMP binary version string */
25 #define ICP_SAL_VERSIONS_HW_VERSION_SIZE 4
26 /**< Max length of hardware version string */
27 
28 /* Part name and number of the accelerator device  */
29 #define SAL_INFO2_DRIVER_SW_VERSION_MAJ_NUMBER 3
30 #define SAL_INFO2_DRIVER_SW_VERSION_MIN_NUMBER 12
31 #define SAL_INFO2_DRIVER_SW_VERSION_PATCH_NUMBER 0
32 
33 /**
34 *******************************************************************************
35  * @ingroup SalVersions
36  *      Structure holding versions information
37  *
38  * @description
39  *      This structure stores information about versions of software
40  *      and hardware being run on a particular device.
41  *****************************************************************************/
42 typedef struct icp_sal_dev_version_info_s {
43 	Cpa32U devId;
44 	/**< Number of acceleration device for which this structure holds
45 	 * version
46 	 * information */
47 	Cpa8U firmwareVersion[ICP_SAL_VERSIONS_FW_VERSION_SIZE];
48 	/**< String identifying the version of the firmware associated with
49 	 * the device. */
50 	Cpa8U mmpVersion[ICP_SAL_VERSIONS_MMP_VERSION_SIZE];
51 	/**< String identifying the version of the MMP binary associated with
52 	 * the device. */
53 	Cpa8U softwareVersion[ICP_SAL_VERSIONS_SW_VERSION_SIZE];
54 	/**< String identifying the version of the software associated with
55 	 * the device. */
56 	Cpa8U hardwareVersion[ICP_SAL_VERSIONS_HW_VERSION_SIZE];
57 	/**< String identifying the version of the hardware (stepping and
58 	 * revision ID) associated with the device. */
59 } icp_sal_dev_version_info_t;
60 
61 /**
62 *******************************************************************************
63  * @ingroup SalVersions
64  *      Obtains the version information for a given device
65  * @description
66  *      This function obtains hardware and software version information
67  *      associated with a given device.
68  *
69  * @param[in]   accelId     ID of the acceleration device for which version
70  *                          information is to be obtained.
71  * @param[out]  pVerInfo    Pointer to a structure that will hold version
72  *                          information
73  *
74  * @context
75  *      This function might sleep. It cannot be executed in a context that
76  *      does not permit sleeping.
77  * @assumptions
78  *      The system has been started
79  * @sideEffects
80  *      None
81  * @blocking
82  *      No
83  * @reentrant
84  *      No
85  * @threadSafe
86  *      Yes
87  *
88  * @return CPA_STATUS_SUCCESS       Operation finished successfully
89  * @return CPA_STATUS_INVALID_PARAM Invalid parameter passed to the function
90  * @return CPA_STATUS_RESOURCE      System resources problem
91  * @return CPA_STATUS_FAIL          Operation failed
92  *
93  *****************************************************************************/
94 CpaStatus icp_sal_getDevVersionInfo(Cpa32U accelId,
95 				    icp_sal_dev_version_info_t *pVerInfo);
96 
97 #endif
98