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