1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright(c) 2007-2022 Intel Corporation */
3 /* $FreeBSD$ */
4 #include "qat_freebsd.h"
5 #include "adf_cfg.h"
6 #include "adf_common_drv.h"
7 #include "adf_accel_devices.h"
8 #include "adf_ver_dbg.h"
9
10 static int adf_sysctl_read_fw_versions(SYSCTL_HANDLER_ARGS)
11 {
12 struct adf_accel_dev *accel_dev = arg1;
13 char fw_version[ADF_CFG_MAX_VAL_LEN_IN_BYTES];
14
15 if (!accel_dev)
16 return -EINVAL;
17
18 if (adf_dev_started(accel_dev))
19 snprintf(fw_version,
20 ADF_CFG_MAX_VAL_LEN_IN_BYTES,
21 "%d.%d.%d",
22 accel_dev->fw_versions.fw_version_major,
23 accel_dev->fw_versions.fw_version_minor,
24 accel_dev->fw_versions.fw_version_patch);
25 else
26 snprintf(fw_version, ADF_CFG_MAX_VAL_LEN_IN_BYTES, "");
27
28 return SYSCTL_OUT(req,
29 fw_version,
30 strnlen(fw_version, ADF_CFG_MAX_VAL_LEN_IN_BYTES));
31 }
32
33 static int adf_sysctl_read_hw_versions(SYSCTL_HANDLER_ARGS)
34 {
35 struct adf_accel_dev *accel_dev = arg1;
36 char hw_version[ADF_CFG_MAX_VAL_LEN_IN_BYTES];
37
38 if (!accel_dev)
39 return -EINVAL;
40
41 if (adf_dev_started(accel_dev))
42 snprintf(hw_version,
43 ADF_CFG_MAX_VAL_LEN_IN_BYTES,
44 "%d",
45 accel_dev->accel_pci_dev.revid);
46 else
47 snprintf(hw_version, ADF_CFG_MAX_VAL_LEN_IN_BYTES, "");
48
49 return SYSCTL_OUT(req,
50 hw_version,
51 strnlen(hw_version, ADF_CFG_MAX_VAL_LEN_IN_BYTES));
52 }
53
54 static int adf_sysctl_read_mmp_versions(SYSCTL_HANDLER_ARGS)
55 {
56 struct adf_accel_dev *accel_dev = arg1;
57 char mmp_version[ADF_CFG_MAX_VAL_LEN_IN_BYTES];
58
59 if (!accel_dev)
60 return -EINVAL;
61
62 if (adf_dev_started(accel_dev))
63 snprintf(mmp_version,
64 ADF_CFG_MAX_VAL_LEN_IN_BYTES,
65 "%d.%d.%d",
66 accel_dev->fw_versions.mmp_version_major,
67 accel_dev->fw_versions.mmp_version_minor,
68 accel_dev->fw_versions.mmp_version_patch);
69
70 if (adf_dev_started(accel_dev))
71 snprintf(mmp_version,
72 ADF_CFG_MAX_VAL_LEN_IN_BYTES,
73 "%d.%d.%d",
74 accel_dev->fw_versions.mmp_version_major,
75 accel_dev->fw_versions.mmp_version_minor,
76 accel_dev->fw_versions.mmp_version_patch);
77 else
78 snprintf(mmp_version, ADF_CFG_MAX_VAL_LEN_IN_BYTES, "");
79
80 return SYSCTL_OUT(req,
81 mmp_version,
82 strnlen(mmp_version, ADF_CFG_MAX_VAL_LEN_IN_BYTES));
83 }
84
85 int
86 adf_ver_dbg_add(struct adf_accel_dev *accel_dev)
87 {
88 struct sysctl_ctx_list *qat_sysctl_ctx;
89 struct sysctl_oid *qat_sysctl_tree;
90 struct sysctl_oid *rc = 0;
91
92 if (!accel_dev)
93 return -EINVAL;
94
95 qat_sysctl_ctx =
96 device_get_sysctl_ctx(accel_dev->accel_pci_dev.pci_dev);
97 qat_sysctl_tree =
98 device_get_sysctl_tree(accel_dev->accel_pci_dev.pci_dev);
99
100 rc = SYSCTL_ADD_OID(qat_sysctl_ctx,
101 SYSCTL_CHILDREN(qat_sysctl_tree),
102 OID_AUTO,
103 "fw_version",
104 CTLTYPE_STRING | CTLFLAG_RD,
105 accel_dev,
106 0,
107 adf_sysctl_read_fw_versions,
108 "A",
109 "QAT FW version");
110 if (!rc)
111 goto err;
112
113 rc = SYSCTL_ADD_OID(qat_sysctl_ctx,
114 SYSCTL_CHILDREN(qat_sysctl_tree),
115 OID_AUTO,
116 "hw_version",
117 CTLTYPE_STRING | CTLFLAG_RD,
118 accel_dev,
119 0,
120 adf_sysctl_read_hw_versions,
121 "A",
122 "QAT HW version");
123 if (!rc)
124 goto err;
125
126 rc = SYSCTL_ADD_OID(qat_sysctl_ctx,
127 SYSCTL_CHILDREN(qat_sysctl_tree),
128 OID_AUTO,
129 "mmp_version",
130 CTLTYPE_STRING | CTLFLAG_RD,
131 accel_dev,
132 0,
133 adf_sysctl_read_mmp_versions,
134 "A",
135 "QAT MMP version");
136 if (!rc)
137 goto err;
138
139 return 0;
140 err:
141 device_printf(GET_DEV(accel_dev),
142 "Failed to add firmware versions to sysctl\n");
143 return -EINVAL;
144 }
145
146 void
147 adf_ver_dbg_del(struct adf_accel_dev *accel_dev)
148 {
149 }
Cache object: ce77f8d66d25bc4155d5838e50dd7e81
|