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 *****************************************************************************/
41typedef 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 *****************************************************************************/
93CpaStatus icp_sal_getDevVersionInfo(Cpa32U accelId,
94				    icp_sal_dev_version_info_t *pVerInfo);
95
96#endif
97