Intel Graphics System Controller Firmware Update Library
Intel Graphics System Controller Firmware Update Library
igsc_lib.h
Go to the documentation of this file.
1 /*
2  * SPDX-License-Identifier: Apache-2.0
3  * Copyright (C) 2019-2024 Intel Corporation
4  */
5 
11 #ifndef __IGSC_LIB_H__
12 #define __IGSC_LIB_H__
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
19 #ifndef IN
20 #define IN
21 #endif /* IN */
22 #ifndef OUT
23 #define OUT
24 #endif /* OUT */
25 
26 #if defined (_WIN32) || defined (_WIN64)
27  #ifndef IGSC_DLL
28  #define IGSC_EXPORT
29  #else /* IGSC_DLL */
30  #ifdef IGSC_DLL_EXPORTS
31  #define IGSC_EXPORT __declspec(dllexport)
32  #else
33  #define IGSC_EXPORT __declspec(dllimport)
34  #endif
35  #endif /* IGSC_DLL */
36 #else
37  #ifndef IGSC_DLL
38  #define IGSC_EXPORT
39  #else /* IGSC_DLL */
40  #ifdef IGSC_DLL_EXPORTS
41  #define IGSC_EXPORT __attribute__((__visibility__("default")))
42  #else
43  #define IGSC_EXPORT
44  #endif
45  #endif /* IGSC_DLL */
46 #endif
47 
49 #include <stdint.h>
50 #include <stdbool.h>
51 #include <stddef.h>
52 
53 #ifndef BIT
54 #define BIT(x) (1U << (x))
55 #endif /* BIT */
56 
57 #ifndef UNUSED_VAR
58 #define UNUSED_VAR(_v) (void)_v
59 #endif
60 
69 #ifdef __linux__
70 typedef int igsc_handle_t;
71 #define IGSC_INVALID_DEVICE_HANDLE (-1)
72 #else /* __linux__ */
73 typedef void *igsc_handle_t;
74 #define IGSC_INVALID_DEVICE_HANDLE ((void *)0)
75 #endif /* __linux__ */
76 
85 };
86 
94 IGSC_EXPORT
95 void igsc_set_log_level(unsigned int log_level);
96 
102 IGSC_EXPORT
103 unsigned int igsc_get_log_level(void);
104 
115 };
116 
121  char project[4];
122  uint16_t hotfix;
123  uint16_t build;
124 };
125 
130  uint16_t major;
131  uint16_t minor;
132  uint16_t hotfix;
133  uint16_t build;
134 };
135 
140  uint32_t date;
141  uint32_t cfg_version;
142 };
143 
144 #define IGSC_MAX_OEM_VERSION_LENGTH 256
145 
150  uint16_t length;
151  uint8_t version[IGSC_MAX_OEM_VERSION_LENGTH];
152 };
153 
163 };
164 
176 };
177 
184  uint16_t major_version;
185  uint16_t major_vcn;
186 };
187 
188 #define IGSC_FWDATA_FORMAT_VERSION_1 0x1
189 #define IGSC_FWDATA_FORMAT_VERSION_2 0x2
190 
191 #define IGSC_FWDATA_FITB_VALID_MASK 0x1
192 
198  uint32_t format_version;
201  uint16_t major_version;
202  uint16_t major_vcn;
203  uint32_t flags;
204  uint32_t data_arb_svn;
205  uint32_t data_arb_svn_fitb;
206 };
207 
211 #define IGSC_OPROM_VER_SIZE 8
212 
217 };
218 
226 };
227 
233  uint16_t subsys_vendor_id;
234  uint16_t subsys_device_id;
235 };
236 
242  uint16_t vendor_id;
243  uint16_t device_id;
244  uint16_t subsys_vendor_id;
245  uint16_t subsys_device_id;
246 };
247 
253  uint16_t vendor_id;
254  uint16_t device_id;
255  uint16_t subsys_vendor_id;
256  uint16_t subsys_device_id;
257 };
258 
264 
269 struct igsc_fwdata_image;
270 
271 
275 struct igsc_device_iterator;
276 
280 #define IGSC_INFO_NAME_SIZE 256
281 
288  uint16_t domain;
289  uint8_t bus;
290  uint8_t dev;
291  uint8_t func;
293  uint16_t device_id;
294  uint16_t vendor_id;
295  uint16_t subsys_device_id;
296  uint16_t subsys_vendor_id;
297 };
298 
305 #define IGSC_ERROR_BASE 0x0000U
306 #define IGSC_SUCCESS (IGSC_ERROR_BASE + 0)
307 #define IGSC_ERROR_INTERNAL (IGSC_ERROR_BASE + 1)
308 #define IGSC_ERROR_NOMEM (IGSC_ERROR_BASE + 2)
309 #define IGSC_ERROR_INVALID_PARAMETER (IGSC_ERROR_BASE + 3)
310 #define IGSC_ERROR_DEVICE_NOT_FOUND (IGSC_ERROR_BASE + 4)
311 #define IGSC_ERROR_BAD_IMAGE (IGSC_ERROR_BASE + 5)
312 #define IGSC_ERROR_PROTOCOL (IGSC_ERROR_BASE + 6)
313 #define IGSC_ERROR_BUFFER_TOO_SMALL (IGSC_ERROR_BASE + 7)
314 #define IGSC_ERROR_INVALID_STATE (IGSC_ERROR_BASE + 8)
315 #define IGSC_ERROR_NOT_SUPPORTED (IGSC_ERROR_BASE + 9)
316 #define IGSC_ERROR_INCOMPATIBLE (IGSC_ERROR_BASE + 10)
317 #define IGSC_ERROR_TIMEOUT (IGSC_ERROR_BASE + 11)
318 #define IGSC_ERROR_PERMISSION_DENIED (IGSC_ERROR_BASE + 12)
319 #define IGSC_ERROR_BUSY (IGSC_ERROR_BASE + 13)
324 /*
325  * Hardware configuration blob size
326  */
327 #define IGSC_HW_CONFIG_BLOB_SIZE 48
328 
335  uint32_t format_version;
336  uint8_t blob[IGSC_HW_CONFIG_BLOB_SIZE];
337 };
338 
345  uint16_t ssvid;
346  uint16_t ssdid;
347 };
348 
353 #define IGSC_MAX_IMAGE_SIZE (8*1024*1024) /* 8M */
354 
355 struct igsc_lib_ctx;
356 
361  struct igsc_lib_ctx *ctx;
362 };
363 
376 IGSC_EXPORT
377 uint32_t igsc_get_last_firmware_status(IN struct igsc_device_handle *handle);
378 
386 IGSC_EXPORT
387 const char *igsc_translate_firmware_status(IN uint32_t firmware_status);
388 
389 #define IGSC_MAX_FW_STATUS_INDEX 5
390 
400 IGSC_EXPORT
401 int igsc_read_fw_status_reg(IN struct igsc_device_handle *handle,
402  IN uint32_t fwsts_index,
403  OUT uint32_t *fwsts_value);
404 
412 typedef void (*igsc_log_func_t)(enum igsc_log_level_type log_level, const char* fmt, ...);
413 
425 IGSC_EXPORT
426 void igsc_set_log_callback_func(IN igsc_log_func_t log_callback_f);
427 
433 IGSC_EXPORT
435 
444 IGSC_EXPORT
445 int igsc_device_init_by_device(IN OUT struct igsc_device_handle *handle,
446  IN const char *device_path);
447 
456 int igsc_device_init_by_handle(IN OUT struct igsc_device_handle *handle,
457  IN igsc_handle_t dev_handle);
458 
467 IGSC_EXPORT
468 int igsc_device_init_by_device_info(IN OUT struct igsc_device_handle *handle,
469  IN const struct igsc_device_info *dev_info);
470 
479 IGSC_EXPORT
480 int igsc_device_get_device_info(IN struct igsc_device_handle *handle,
481  OUT struct igsc_device_info *dev_info);
482 
483 
496 IGSC_EXPORT
498  OUT struct igsc_device_info *dev_info);
499 
507 IGSC_EXPORT
508 int igsc_device_close(IN OUT struct igsc_device_handle *handle);
509 
518 IGSC_EXPORT
519 int igsc_device_fw_version(IN struct igsc_device_handle *handle,
520  OUT struct igsc_fw_version *version);
521 
532 IGSC_EXPORT
533 int igsc_image_fw_version(IN const uint8_t *buffer,
534  IN uint32_t buffer_len,
535  OUT struct igsc_fw_version *version);
536 
546 IGSC_EXPORT
547 int igsc_device_hw_config(IN struct igsc_device_handle *handle,
548  OUT struct igsc_hw_config *hw_config);
549 
559 IGSC_EXPORT
560 int igsc_device_subsystem_ids(IN struct igsc_device_handle *handle,
561  OUT struct igsc_subsystem_ids *ssids);
562 
573 IGSC_EXPORT
574 int igsc_image_hw_config(IN const uint8_t *buffer,
575  IN uint32_t buffer_len,
576  OUT struct igsc_hw_config *hw_config);
577 
587 IGSC_EXPORT
588 int igsc_hw_config_compatible(IN const struct igsc_hw_config *image_hw_config,
589  IN const struct igsc_hw_config *device_hw_config);
599 IGSC_EXPORT
600 int igsc_hw_config_to_string(IN const struct igsc_hw_config *hw_config,
601  IN char *buf, IN size_t length);
602 
610 typedef void (*igsc_progress_func_t)(uint32_t sent, uint32_t total, void *ctx);
611 
624 IGSC_EXPORT int
625 igsc_device_fw_update(IN struct igsc_device_handle *handle,
626  IN const uint8_t *buffer,
627  IN const uint32_t buffer_len,
628  IN igsc_progress_func_t progress_f,
629  IN void *ctx);
630 
631 /* flags with which the update should be performed */
633  uint32_t force_update : 1;
634  uint32_t reserved : 31;
635 };
636 
650 IGSC_EXPORT int
652  IN const uint8_t *buffer,
653  IN const uint32_t buffer_len,
654  IN igsc_progress_func_t progress_f,
655  IN void *ctx,
656  IN struct igsc_fw_update_flags flags);
657 
674 IGSC_EXPORT int
675 igsc_iaf_psc_update(IN struct igsc_device_handle *handle,
676  IN const uint8_t *buffer,
677  IN const uint32_t buffer_len,
678  IN igsc_progress_func_t progress_f,
679  IN void *ctx);
680 
693 IGSC_EXPORT int
695  IN const uint8_t *buffer,
696  IN const uint32_t buffer_len,
697  IN igsc_progress_func_t progress_f,
698  IN void *ctx);
699 
711 IGSC_EXPORT int
713  IN struct igsc_fwdata_image *img,
714  IN igsc_progress_func_t progress_f,
715  IN void *ctx);
716 
726 IGSC_EXPORT
727 int igsc_image_fwdata_init(IN OUT struct igsc_fwdata_image **img,
728  IN const uint8_t *buffer,
729  IN uint32_t buffer_len);
730 
739 IGSC_EXPORT
740 int igsc_device_fwdata_version(IN struct igsc_device_handle *handle,
741  OUT struct igsc_fwdata_version *version);
742 
752 IGSC_EXPORT
753 int igsc_device_fwdata_version2(IN struct igsc_device_handle* handle,
754  OUT struct igsc_fwdata_version2* version);
755 
764 IGSC_EXPORT
766  OUT struct igsc_fwdata_version *version);
767 
777 IGSC_EXPORT
779  OUT struct igsc_fwdata_version2* version);
780 
795 IGSC_EXPORT
796 uint8_t igsc_fwdata_version_compare(IN struct igsc_fwdata_version *image_ver,
797  IN struct igsc_fwdata_version *device_ver);
798 
814 IGSC_EXPORT
815 uint8_t igsc_fwdata_version_compare2(IN struct igsc_fwdata_version2* image_ver,
816  IN struct igsc_fwdata_version2* device_ver);
817 
827 IGSC_EXPORT
829  OUT uint32_t *count);
830 
844 IGSC_EXPORT
846  OUT struct igsc_fwdata_device_info *devices,
847  IN OUT uint32_t *count);
858 IGSC_EXPORT
860  IN struct igsc_device_info *device);
868 IGSC_EXPORT
870 
880 IGSC_EXPORT
882  OUT struct igsc_fwdata_device_info *device);
883 
891 IGSC_EXPORT
892 int igsc_image_fwdata_release(IN struct igsc_fwdata_image *img);
893 
907 IGSC_EXPORT
908 uint8_t igsc_fw_version_compare(IN struct igsc_fw_version *image_ver,
909  IN struct igsc_fw_version *device_ver);
910 
920 IGSC_EXPORT
921 int igsc_device_oprom_version(IN struct igsc_device_handle *handle,
922  IN uint32_t oprom_type,
923  OUT struct igsc_oprom_version *version);
924 
937 IGSC_EXPORT
938 int igsc_device_oprom_update(IN struct igsc_device_handle *handle,
939  IN uint32_t oprom_type,
940  IN struct igsc_oprom_image *img,
941  IN igsc_progress_func_t progress_f,
942  IN void *ctx);
957 IGSC_EXPORT
958 int igsc_image_oprom_init(IN OUT struct igsc_oprom_image **img,
959  IN const uint8_t *buffer,
960  IN uint32_t buffer_len);
961 
971 IGSC_EXPORT
972 int igsc_image_oprom_version(IN struct igsc_oprom_image *img,
973  IN enum igsc_oprom_type type,
974  OUT struct igsc_oprom_version *version);
975 
985 IGSC_EXPORT
986 int igsc_image_oprom_type(IN struct igsc_oprom_image *img,
987  IN uint32_t *oprom_type);
988 
998 IGSC_EXPORT
1000  OUT uint32_t *count);
1001 
1015 IGSC_EXPORT
1017  OUT struct igsc_oprom_device_info *devices,
1018  IN OUT uint32_t *count);
1030 IGSC_EXPORT
1032  IN enum igsc_oprom_type request_type,
1033  IN struct igsc_device_info *device);
1041 IGSC_EXPORT
1043 
1053 IGSC_EXPORT
1055  OUT struct igsc_oprom_device_info *device);
1056 
1068 IGSC_EXPORT
1070  IN uint32_t request_type,
1071  OUT uint32_t *count);
1072 
1087 IGSC_EXPORT
1089  IN uint32_t request_type,
1090  OUT struct igsc_oprom_device_info_4ids *devices,
1091  IN OUT uint32_t *count);
1100 IGSC_EXPORT
1102  IN uint32_t request_type);
1103 
1114 IGSC_EXPORT
1116  IN uint32_t request_type,
1117  OUT struct igsc_oprom_device_info_4ids *device);
1118 
1128 IGSC_EXPORT
1130  IN uint32_t request_type,
1131  OUT bool *has_4ids_extension);
1132 
1141 IGSC_EXPORT
1143  OUT bool *has_2ids_extension);
1144 
1153 IGSC_EXPORT
1154 int igsc_image_oprom_code_devid_enforced(IN struct igsc_hw_config *hw_config,
1155  OUT bool *devid_enforced);
1156 
1164 IGSC_EXPORT
1165 int igsc_image_oprom_release(IN struct igsc_oprom_image *img);
1166 
1180 IGSC_EXPORT
1181 uint8_t igsc_oprom_version_compare(const struct igsc_oprom_version *image_ver,
1182  const struct igsc_oprom_version *device_ver);
1192 IGSC_EXPORT
1193 int igsc_image_get_type(IN const uint8_t *buffer,
1194  IN const uint32_t buffer_len,
1195  OUT uint8_t *type);
1212 IGSC_EXPORT
1213 int igsc_device_iterator_create(struct igsc_device_iterator **iter);
1214 
1223 IGSC_EXPORT
1224 int igsc_device_iterator_next(struct igsc_device_iterator *iter,
1225  struct igsc_device_info *info);
1226 
1234 IGSC_EXPORT
1235 void igsc_device_iterator_destroy(struct igsc_device_iterator *iter);
1249  IGSC_IFR_TILE_0 = 0x0001,
1250  IGSC_IFR_TILE_1 = 0x0002,
1251 };
1252 
1257  IGSC_IFR_SUPPORTED_TEST_SCAN = 0x00000001,
1258  IGSC_IFR_SUPPORTED_TEST_ARRAY = 0x00000002,
1259 };
1260 
1265  IGSC_IFR_REPAIR_DSS_EN = 0x00000001,
1266  IGSC_IFR_REPAIR_ARRAY = 0x00000002,
1267 };
1268 
1282 };
1283 
1295 IGSC_EXPORT
1296 int igsc_ifr_get_status(IN struct igsc_device_handle *handle,
1297  OUT uint8_t *result,
1298  OUT uint32_t *supported_tests,
1299  OUT uint32_t *ifr_applied,
1300  OUT uint8_t *tiles_num);
1301 
1314 IGSC_EXPORT
1315 int igsc_ifr_run_test(IN struct igsc_device_handle *handle,
1316  IN uint8_t test_type,
1317  IN uint8_t tiles,
1318  OUT uint8_t *result,
1319  OUT uint8_t *run_status,
1320  OUT uint32_t *error_code);
1334  uint32_t corr_err;
1335  uint32_t uncorr_err;
1336 };
1337 
1342  uint32_t num_of_tiles;
1345 };
1346 
1355 IGSC_EXPORT
1356 int igsc_gfsp_count_tiles(IN struct igsc_device_handle *handle,
1357  OUT uint32_t *max_num_of_tiles);
1358 
1367 IGSC_EXPORT
1368 int igsc_gfsp_memory_errors(IN struct igsc_device_handle *handle,
1369  IN OUT struct igsc_gfsp_mem_err *tiles);
1370 
1378 };
1379 
1388 };
1389 
1404 };
1405 
1417 IGSC_EXPORT
1418 int igsc_ifr_run_array_scan_test(IN struct igsc_device_handle *handle,
1419  OUT uint32_t *status,
1420  OUT uint32_t *extended_status,
1421  OUT uint32_t *pending_reset,
1422  OUT uint32_t *error_code);
1423 
1435 IGSC_EXPORT
1436 int igsc_ifr_run_mem_ppr_test(IN struct igsc_device_handle *handle,
1437  OUT uint32_t *status,
1438  OUT uint32_t *pending_reset,
1439  OUT uint32_t *error_code);
1440 
1447 };
1448 
1456 };
1457 
1478 };
1479 
1487 };
1488 
1506 IGSC_EXPORT
1507 int igsc_ifr_get_status_ext(IN struct igsc_device_handle *handle,
1508  OUT uint32_t *supported_tests,
1509  OUT uint32_t *hw_capabilities,
1510  OUT uint32_t *ifr_applied,
1511  OUT uint32_t *prev_errors,
1512  OUT uint32_t *pending_reset);
1513 
1522 IGSC_EXPORT
1523 int igsc_ifr_count_tiles(IN struct igsc_device_handle *handle,
1524  OUT uint16_t *supported_tiles);
1525 
1537 IGSC_EXPORT
1539  IN uint16_t tile_idx,
1540  OUT uint16_t *used_array_repair_entries,
1541  OUT uint16_t *available_array_repair_entries,
1542  OUT uint16_t *failed_dss);
1553 IGSC_EXPORT
1554 int igsc_ecc_config_set(IN struct igsc_device_handle *handle,
1555  IN uint8_t req_ecc_state,
1556  OUT uint8_t *cur_ecc_state,
1557  OUT uint8_t *pen_ecc_state);
1558 
1568 IGSC_EXPORT
1569 int igsc_ecc_config_get(IN struct igsc_device_handle *handle,
1570  OUT uint8_t *cur_ecc_state,
1571  OUT uint8_t *pen_ecc_state);
1572 
1581 IGSC_EXPORT
1582 int igsc_device_oem_version(IN struct igsc_device_handle *handle,
1583  OUT struct igsc_oem_version *version);
1584 
1593 IGSC_EXPORT
1594 int igsc_device_ifr_bin_version(IN struct igsc_device_handle *handle,
1595  OUT struct igsc_ifr_bin_version *version);
1596 
1605 IGSC_EXPORT
1606 int igsc_device_psc_version(IN struct igsc_device_handle *handle,
1607  OUT struct igsc_psc_version *version);
1608 
1610  IGSC_HEALTH_INDICATOR_HEALTHY = 0,
1611  IGSC_HEALTH_INDICATOR_DEGRADED = 1,
1612  IGSC_HEALTH_INDICATOR_CRITICAL = 2,
1613  IGSC_HEALTH_INDICATOR_REPLACE = 3
1614 };
1615 
1624 IGSC_EXPORT
1625 int igsc_gfsp_get_health_indicator(IN struct igsc_device_handle *handle,
1626  OUT uint8_t *health_indicator);
1627 
1641 IGSC_EXPORT
1642 int igsc_gfsp_heci_cmd(struct igsc_device_handle *handle, uint32_t gfsp_cmd,
1643  uint8_t* in_buffer, size_t in_buffer_size,
1644  uint8_t* out_buffer, size_t out_buffer_size,
1645  size_t *actual_out_buffer_size);
1646 
1651  CSC_LATE_BINDING_FLAGS_IS_PERSISTENT_MASK = 0x1,
1652 };
1653 
1658  CSC_LATE_BINDING_TYPE_INVALID = 0,
1659  CSC_LATE_BINDING_TYPE_FAN_TABLE,
1660  CSC_LATE_BINDING_TYPE_VR_CONFIG
1661 };
1662 
1667  CSC_LATE_BINDING_STATUS_SUCCESS = 0,
1668  CSC_LATE_BINDING_STATUS_4ID_MISMATCH = 1,
1669  CSC_LATE_BINDING_STATUS_ARB_FAILURE = 2,
1670  CSC_LATE_BINDING_STATUS_GENERAL_ERROR = 3,
1671  CSC_LATE_BINDING_STATUS_INVALID_PARAMS = 4,
1672  CSC_LATE_BINDING_STATUS_INVALID_SIGNATURE = 5,
1673  CSC_LATE_BINDING_STATUS_INVALID_PAYLOAD = 6,
1674  CSC_LATE_BINDING_STATUS_TIMEOUT = 7,
1675 };
1676 
1689 IGSC_EXPORT
1690 int igsc_device_update_late_binding_config(IN struct igsc_device_handle *handle,
1691  IN uint32_t type, /* enum csc_late_binding_type */
1692  IN uint32_t flags, /* enum csc_late_binding_flags */
1693  IN uint8_t *payload, IN size_t payload_size,
1694  OUT uint32_t *status); /* enum csc_late_binding_status */
1703 IGSC_EXPORT
1704 int igsc_device_commit_arb_svn(IN struct igsc_device_handle *handle, uint8_t *fw_error);
1705 
1714 IGSC_EXPORT
1716  OUT uint8_t *min_allowed_svn);
1717 
1730  IGSC_PPR_STATUS_TEST_EXECUTED_MASK = 0x1,
1731  IGSC_PPR_STATUS_TEST_SUCCESS_MASK = 0x2,
1732  IGSC_PPR_STATUS_FOUND_HW_ERROR_MASK = 0x4,
1733  IGSC_PPR_STATUS_HW_ERROR_REPAIRED_MASK = 0x8,
1734 };
1735 
1743 };
1744 
1751  uint8_t ppr_mode;
1754  uint8_t reserved;
1755  uint32_t ras_ppr_applied;
1756  uint32_t mbist_completed;
1757  uint32_t num_devices;
1759 };
1760 
1769 IGSC_EXPORT
1770 int igsc_memory_ppr_devices(IN struct igsc_device_handle *handle,
1771  OUT uint32_t *device_count);
1772 
1782 IGSC_EXPORT
1783 int igsc_memory_ppr_status(IN struct igsc_device_handle *handle,
1784  OUT struct igsc_ppr_status *ppr_status);
1785 
1789 #ifdef __cplusplus
1790 }
1791 #endif
1792 #endif /* __IGSC_LIB_H__ */
IGSC_EXPORT int igsc_image_oprom_supported_devices(IN struct igsc_oprom_image *img, OUT struct igsc_oprom_device_info *devices, IN OUT uint32_t *count)
Retrieves a list of supported devices by the OPROM update image associated with the handle...
IGSC_EXPORT int igsc_image_fwdata_match_device(IN struct igsc_fwdata_image *img, IN struct igsc_device_info *device)
check if GSC in-field data firmware image can be applied on the device.
IGSC_EXPORT void igsc_device_iterator_destroy(struct igsc_device_iterator *iter)
Free iterator for devices capable of FW update.
igsc_ifr_repairs
Definition: igsc_lib.h:1264
IGSC_EXPORT int igsc_ifr_run_mem_ppr_test(IN struct igsc_device_handle *handle, OUT uint32_t *status, OUT uint32_t *pending_reset, OUT uint32_t *error_code)
Runs IFR memory Post Package Repair (PPR) test on GSC IFR device.
IGSC_EXPORT int igsc_image_fwdata_count_devices(IN struct igsc_fwdata_image *img, OUT uint32_t *count)
Retrieves a count of of different devices supported by the GSC in-field data firmware update image as...
structure to store device subsystem ids
Definition: igsc_lib.h:344
IGSC_EXPORT int igsc_image_get_type(IN const uint8_t *buffer, IN const uint32_t buffer_len, OUT uint8_t *type)
Determine the type of the provided image.
IGSC_EXPORT int igsc_ifr_count_tiles(IN struct igsc_device_handle *handle, OUT uint16_t *supported_tiles)
Counts the IFR supported tiles.
struct igsc_gfsp_tile_mem_err errors[]
Definition: igsc_lib.h:1344
IGSC_EXPORT int igsc_device_fwdata_image_update(IN struct igsc_device_handle *handle, IN struct igsc_fwdata_image *img, IN igsc_progress_func_t progress_f, IN void *ctx)
Perform the GSC firmware in-field data update from the provided firmware update image.
igsc_gfsp_health_indicators
Gets memory health indicator.
Definition: igsc_lib.h:1609
IGSC_EXPORT int igsc_device_commit_arb_svn(IN struct igsc_device_handle *handle, uint8_t *fw_error)
Sends ARB SVN Commit HECI command.
IGSC_EXPORT int igsc_gfsp_count_tiles(IN struct igsc_device_handle *handle, OUT uint32_t *max_num_of_tiles)
Gets number of tiles.
uint16_t major_version
Definition: igsc_lib.h:184
IGSC_EXPORT int igsc_image_oprom_init(IN OUT struct igsc_oprom_image **img, IN const uint8_t *buffer, IN uint32_t buffer_len)
initializes OPROM image handle from the supplied OPROM update image.
igsc_log_level_type
Definition: igsc_lib.h:80
igsc_image_type
Definition: igsc_lib.h:108
uint16_t domain
Definition: igsc_lib.h:288
igsc_ifr_array_scan_extended_status
Definition: igsc_lib.h:1390
igsc_fwdata_version_compare_result
Definition: igsc_lib.h:168
IGSC_EXPORT igsc_log_func_t igsc_get_log_callback_func(void)
Retrieves log callback function pointer.
IGSC_EXPORT int igsc_device_oprom_update(IN struct igsc_device_handle *handle, IN uint32_t oprom_type, IN struct igsc_oprom_image *img, IN igsc_progress_func_t progress_f, IN void *ctx)
Perform the OPROM update from the provided image.
char project[4]
Definition: igsc_lib.h:121
IGSC_EXPORT int igsc_device_fwdata_version2(IN struct igsc_device_handle *handle, OUT struct igsc_fwdata_version2 *version)
Retrieves the GSC in-field data Firmware Version from the device With ability to return FW Data versi...
IGSC_EXPORT int igsc_device_iterator_next(struct igsc_device_iterator *iter, struct igsc_device_info *info)
Obtain next devices capable of FW update.
IGSC_EXPORT int igsc_ifr_run_array_scan_test(IN struct igsc_device_handle *handle, OUT uint32_t *status, OUT uint32_t *extended_status, OUT uint32_t *pending_reset, OUT uint32_t *error_code)
Runs IFR Array and Scan tests on GSC IFR device.
IGSC_EXPORT int igsc_image_oprom_iterator_reset(IN struct igsc_oprom_image *img)
reset the iterator over supported devices
uint32_t data_arb_svn_fitb
Definition: igsc_lib.h:205
IGSC_EXPORT int igsc_image_fwdata_release(IN struct igsc_fwdata_image *img)
release the fwdata image handle
IGSC_EXPORT int igsc_device_hw_config(IN struct igsc_device_handle *handle, OUT struct igsc_hw_config *hw_config)
Retrieves the hw configuration from the device.
IGSC_EXPORT int igsc_image_oprom_version(IN struct igsc_oprom_image *img, IN enum igsc_oprom_type type, OUT struct igsc_oprom_version *version)
Retrieves the OPROM version from the supplied OPROM update image.
uint16_t vendor_id
Definition: igsc_lib.h:294
IGSC_EXPORT int igsc_device_update_device_info(IN struct igsc_device_handle *handle, OUT struct igsc_device_info *dev_info)
Update device information from the firmware The subsystem device id and the subsystem vendor id...
IGSC_EXPORT int igsc_image_oprom_match_device(IN struct igsc_oprom_image *img, IN enum igsc_oprom_type request_type, IN struct igsc_device_info *device)
check if oprom image can be applied on the device.
igsc_ifr_previous_errors_masks
Definition: igsc_lib.h:1461
uint32_t oem_manuf_data_version
Definition: igsc_lib.h:199
uint16_t major_vcn
Definition: igsc_lib.h:185
csc_late_binding_status
Definition: igsc_lib.h:1666
IGSC_EXPORT int igsc_device_fw_version(IN struct igsc_device_handle *handle, OUT struct igsc_fw_version *version)
Retrieves the GSC Firmware Version from the device.
IGSC_EXPORT int igsc_device_fwdata_version(IN struct igsc_device_handle *handle, OUT struct igsc_fwdata_version *version)
Retrieves the GSC in-field data Firmware Version from the device.
uint16_t hotfix
Definition: igsc_lib.h:122
IGSC_EXPORT uint8_t igsc_oprom_version_compare(const struct igsc_oprom_version *image_ver, const struct igsc_oprom_version *device_ver)
Compares input oprom version to the flash one.
csc_late_binding_flags
Definition: igsc_lib.h:1650
IGSC_EXPORT int igsc_device_fw_update(IN struct igsc_device_handle *handle, IN const uint8_t *buffer, IN const uint32_t buffer_len, IN igsc_progress_func_t progress_f, IN void *ctx)
Perform the firmware update from the provided firmware update image.
uint16_t subsys_vendor_id
Definition: igsc_lib.h:233
uint8_t ppr_mode
Definition: igsc_lib.h:1751
uint16_t subsys_device_id
Definition: igsc_lib.h:234
uint32_t cfg_version
Definition: igsc_lib.h:141
IGSC_EXPORT int igsc_image_fwdata_version(IN struct igsc_fwdata_image *img, OUT struct igsc_fwdata_version *version)
Retrieves the GSC in-field data Firmware version from the supplied GSC in-field data Firmware update ...
uint32_t date
Definition: igsc_lib.h:140
uint32_t ras_ppr_applied
Definition: igsc_lib.h:1755
IGSC_EXPORT const char * igsc_translate_firmware_status(IN uint32_t firmware_status)
Return the firmware status message corresponding to the code.
IGSC_EXPORT uint8_t igsc_fwdata_version_compare2(IN struct igsc_fwdata_version2 *image_ver, IN struct igsc_fwdata_version2 *device_ver)
Compares input GSC in-field data firmware update version to the flash one.
uint16_t subsys_vendor_id
Definition: igsc_lib.h:296
IGSC_EXPORT int igsc_image_oprom_count_devices_typed(IN struct igsc_oprom_image *img, IN uint32_t request_type, OUT uint32_t *count)
Retrieves a count of of different devices supported by the OPROM update image associated with the han...
uint16_t subsys_device_id
Definition: igsc_lib.h:256
IGSC_EXPORT int igsc_image_oprom_release(IN struct igsc_oprom_image *img)
release the OPROM image handle
igsc_supported_ifr_tests
Definition: igsc_lib.h:1256
uint32_t format_version
Definition: igsc_lib.h:198
IGSC_EXPORT int igsc_gfsp_memory_errors(IN struct igsc_device_handle *handle, IN OUT struct igsc_gfsp_mem_err *tiles)
Gets GFSP number of memory errors.
IGSC_EXPORT int igsc_image_oprom_iterator_next_typed(IN struct igsc_oprom_image *img, IN uint32_t request_type, OUT struct igsc_oprom_device_info_4ids *device)
progress the supported device iterator and return the oprom device info, based on image type ...
uint32_t num_of_ppr_fuses_used_by_fw
Definition: igsc_lib.h:1741
IGSC_EXPORT int igsc_image_oprom_iterator_next(IN struct igsc_oprom_image *img, OUT struct igsc_oprom_device_info *device)
progress the supported device iterator and return the oprom device info
IGSC_EXPORT int igsc_device_close(IN OUT struct igsc_device_handle *handle)
Closes a GSC Firmware Update device.
igsc_ifr_supported_tests_masks
Definition: igsc_lib.h:1444
IGSC_EXPORT int igsc_device_subsystem_ids(IN struct igsc_device_handle *handle, OUT struct igsc_subsystem_ids *ssids)
Retrieves the subsystem ids (vid/did) from the device.
IGSC_EXPORT uint8_t igsc_fw_version_compare(IN struct igsc_fw_version *image_ver, IN struct igsc_fw_version *device_ver)
Compares input fw version to the flash one.
uint8_t test_run_status
Definition: igsc_lib.h:1753
void(* igsc_log_func_t)(enum igsc_log_level_type log_level, const char *fmt,...)
Callback function template for printing igsc log messages.
Definition: igsc_lib.h:412
uint16_t subsys_device_id
Definition: igsc_lib.h:295
IGSC_EXPORT int igsc_image_oprom_supported_devices_typed(IN struct igsc_oprom_image *img, IN uint32_t request_type, OUT struct igsc_oprom_device_info_4ids *devices, IN OUT uint32_t *count)
Retrieves a list of supported devices based on image type by the OPROM update image associated with t...
uint8_t boot_time_memory_correction_pending
Definition: igsc_lib.h:1749
void(* igsc_progress_func_t)(uint32_t sent, uint32_t total, void *ctx)
Callback function template for monitor firmware update progress.
Definition: igsc_lib.h:610
igsc_ifr_tiles
Definition: igsc_lib.h:1248
IGSC_EXPORT int igsc_image_oprom_code_devid_enforced(IN struct igsc_hw_config *hw_config, OUT bool *devid_enforced)
returns whether the oprom code config has devId enforcement bit set
uint16_t build
Definition: igsc_lib.h:123
uint8_t version[IGSC_MAX_OEM_VERSION_LENGTH]
Definition: igsc_lib.h:151
uint16_t major_version
Definition: igsc_lib.h:201
IGSC_EXPORT int igsc_image_fwdata_iterator_reset(IN struct igsc_fwdata_image *img)
reset the iterator over supported devices
uint32_t oem_manuf_data_version
Definition: igsc_lib.h:183
int igsc_device_init_by_handle(IN OUT struct igsc_device_handle *handle, IN igsc_handle_t dev_handle)
Initializes a GSC Firmware Update device.
#define IGSC_INFO_NAME_SIZE
Definition: igsc_lib.h:280
uint32_t mbist_completed
Definition: igsc_lib.h:1756
#define IGSC_OPROM_VER_SIZE
Definition: igsc_lib.h:211
IGSC_EXPORT int igsc_device_iterator_create(struct igsc_device_iterator **iter)
Create iterator for devices capable of FW update.
uint8_t func
Definition: igsc_lib.h:291
uint16_t subsys_vendor_id
Definition: igsc_lib.h:255
IGSC_EXPORT int igsc_image_fwdata_supported_devices(IN struct igsc_fwdata_image *img, OUT struct igsc_fwdata_device_info *devices, IN OUT uint32_t *count)
Retrieves a list of supported devices by the GSC in-field data firmware update image associated with ...
IGSC_EXPORT unsigned int igsc_get_log_level(void)
Retrieves current log level.
IGSC_EXPORT int igsc_iaf_psc_update(IN struct igsc_device_handle *handle, IN const uint8_t *buffer, IN const uint32_t buffer_len, IN igsc_progress_func_t progress_f, IN void *ctx)
Perform Intel Accelerator Fabric Platform Specific Configuration (PSC) update from the provided updat...
igsc_ifr_hw_capabilities_masks
Definition: igsc_lib.h:1452
IGSC_EXPORT int igsc_ifr_get_status_ext(IN struct igsc_device_handle *handle, OUT uint32_t *supported_tests, OUT uint32_t *hw_capabilities, OUT uint32_t *ifr_applied, OUT uint32_t *prev_errors, OUT uint32_t *pending_reset)
Retrieves the status of GSC IFR device.
IGSC_EXPORT int igsc_image_oprom_has_2ids_extension(IN struct igsc_oprom_image *img, OUT bool *has_2ids_extension)
returns whether the oprom image has 2ids device extension
IGSC_EXPORT int igsc_hw_config_compatible(IN const struct igsc_hw_config *image_hw_config, IN const struct igsc_hw_config *device_hw_config)
Check whether image hardware configuration compatible with device hardware configuration.
igsc_ifr_pending_reset
Definition: igsc_lib.h:1374
csc_late_binding_type
Sends Late Binding HECI command.
Definition: igsc_lib.h:1657
IGSC_EXPORT int igsc_device_oem_version(IN struct igsc_device_handle *handle, OUT struct igsc_oem_version *version)
Retrieves the OEM Version from the device.
struct igsc_lib_ctx * ctx
Definition: igsc_lib.h:361
IGSC_EXPORT int igsc_ecc_config_set(IN struct igsc_device_handle *handle, IN uint8_t req_ecc_state, OUT uint8_t *cur_ecc_state, OUT uint8_t *pen_ecc_state)
Set ECC Configuration.
IGSC_EXPORT int igsc_device_get_device_info(IN struct igsc_device_handle *handle, OUT struct igsc_device_info *dev_info)
Retrieve device information from the system.
igsc_ifr_repairs_mask
Definition: igsc_lib.h:1483
IGSC_EXPORT int igsc_image_oprom_count_devices(IN struct igsc_oprom_image *img, OUT uint32_t *count)
Retrieves a count of of different devices supported by the OPROM update image associated with the han...
IGSC_EXPORT int igsc_read_fw_status_reg(IN struct igsc_device_handle *handle, IN uint32_t fwsts_index, OUT uint32_t *fwsts_value)
Read firmware status register.
char name[IGSC_INFO_NAME_SIZE]
Definition: igsc_lib.h:286
uint32_t num_devices
Definition: igsc_lib.h:1757
IGSC_EXPORT int igsc_device_init_by_device(IN OUT struct igsc_device_handle *handle, IN const char *device_path)
Initializes a GSC Firmware Update device.
uint8_t version[IGSC_OPROM_VER_SIZE]
Definition: igsc_lib.h:216
IGSC_EXPORT int igsc_image_fwdata_init(IN OUT struct igsc_fwdata_image **img, IN const uint8_t *buffer, IN uint32_t buffer_len)
initializes firmware data image handle from the supplied firmware data update image.
IGSC_EXPORT int igsc_ecc_config_get(IN struct igsc_device_handle *handle, OUT uint8_t *cur_ecc_state, OUT uint8_t *pen_ecc_state)
Get ECC Configuration.
IGSC_EXPORT int igsc_hw_config_to_string(IN const struct igsc_hw_config *hw_config, IN char *buf, IN size_t length)
express hw configuration in a string
IGSC_EXPORT int igsc_image_fwdata_version2(IN struct igsc_fwdata_image *img, OUT struct igsc_fwdata_version2 *version)
Retrieves the GSC in-field data Firmware version from the supplied GSC in-field data Firmware update ...
IGSC_EXPORT int igsc_device_ifr_bin_version(IN struct igsc_device_handle *handle, OUT struct igsc_ifr_bin_version *version)
Retrieves the IFR Binary Version from the device.
IGSC_EXPORT int igsc_device_get_min_allowed_arb_svn(IN struct igsc_device_handle *handle, OUT uint8_t *min_allowed_svn)
Retrieves Minimal allowed ARB SVN.
IGSC_EXPORT int igsc_device_fw_update_ex(IN struct igsc_device_handle *handle, IN const uint8_t *buffer, IN const uint32_t buffer_len, IN igsc_progress_func_t progress_f, IN void *ctx, IN struct igsc_fw_update_flags flags)
Perform the firmware update with flags from the provided firmware update image.
IGSC_EXPORT int igsc_image_oprom_iterator_reset_typed(IN struct igsc_oprom_image *img, IN uint32_t request_type)
reset the iterator over supported devices based on image type
structure to store hw configuration
Definition: igsc_lib.h:334
igsc_ifr_array_scan_test_status_mask
Definition: igsc_lib.h:1383
IGSC_EXPORT int igsc_device_init_by_device_info(IN OUT struct igsc_device_handle *handle, IN const struct igsc_device_info *dev_info)
Initializes a GSC Firmware Update device.
IGSC_EXPORT void igsc_set_log_callback_func(IN igsc_log_func_t log_callback_f)
Sets log callback function. This interface is not thread-aware, Changes here may lead to crashes in m...
IGSC_EXPORT int igsc_image_oprom_has_4ids_extension(IN struct igsc_oprom_image *img, IN uint32_t request_type, OUT bool *has_4ids_extension)
returns whether the oprom image has 4ids device extension
IGSC_EXPORT int igsc_image_hw_config(IN const uint8_t *buffer, IN uint32_t buffer_len, OUT struct igsc_hw_config *hw_config)
Retrieves the hw configurations from the provided firmware update image.
IGSC_EXPORT int igsc_device_psc_version(IN struct igsc_device_handle *handle, OUT struct igsc_psc_version *version)
Retrieves the PSC Version from the device.
void * igsc_handle_t
Definition: igsc_lib.h:73
IGSC_EXPORT void igsc_set_log_level(unsigned int log_level)
Sets log level.
uint16_t major_vcn
Definition: igsc_lib.h:202
uint32_t data_arb_svn
Definition: igsc_lib.h:204
IGSC_EXPORT int igsc_memory_ppr_status(IN struct igsc_device_handle *handle, OUT struct igsc_ppr_status *ppr_status)
Retrieves GFSP memory PPR status structure data.
IGSC_EXPORT int igsc_image_oprom_type(IN struct igsc_oprom_image *img, IN uint32_t *oprom_type)
Retrieves the OPROM type from the provided OPROM update image.
IGSC_EXPORT int igsc_ifr_run_test(IN struct igsc_device_handle *handle, IN uint8_t test_type, IN uint8_t tiles, OUT uint8_t *result, OUT uint8_t *run_status, OUT uint32_t *error_code)
Runs IFR test on GSC IFR device.
uint16_t length
Definition: igsc_lib.h:150
struct igsc_device_mbist_ppr_status device_mbist_ppr_status[]
Definition: igsc_lib.h:1758
igsc_oprom_type
Definition: igsc_lib.h:222
IGSC_EXPORT int igsc_ifr_get_tile_repair_info(IN struct igsc_device_handle *handle, IN uint16_t tile_idx, OUT uint16_t *used_array_repair_entries, OUT uint16_t *available_array_repair_entries, OUT uint16_t *failed_dss)
Retrieves the IFR repair info.
IGSC_EXPORT int igsc_image_fw_version(IN const uint8_t *buffer, IN uint32_t buffer_len, OUT struct igsc_fw_version *version)
Retrieves the Firmware Version from the provided firmware update image.
IGSC_EXPORT int igsc_memory_ppr_devices(IN struct igsc_device_handle *handle, OUT uint32_t *device_count)
Retrieves GFSP number of memory PPR devices.
igsc_version_compare_result
Definition: igsc_lib.h:157
uint32_t num_of_tiles
Definition: igsc_lib.h:1342
ifr_test_run_status
Definition: igsc_lib.h:1275
IGSC_EXPORT int igsc_device_fwdata_update(IN struct igsc_device_handle *handle, IN const uint8_t *buffer, IN const uint32_t buffer_len, IN igsc_progress_func_t progress_f, IN void *ctx)
Perform the GSC firmware in-field data update from the provided firmware update image.
IGSC_EXPORT uint32_t igsc_get_last_firmware_status(IN struct igsc_device_handle *handle)
Return the last firmware status code.
igsc_ppr_test_status_mask
Definition: igsc_lib.h:1729
uint16_t device_id
Definition: igsc_lib.h:293
IGSC_EXPORT int igsc_ifr_get_status(IN struct igsc_device_handle *handle, OUT uint8_t *result, OUT uint32_t *supported_tests, OUT uint32_t *ifr_applied, OUT uint8_t *tiles_num)
Retrieves the status of GSC IFR device.
IGSC_EXPORT int igsc_device_oprom_version(IN struct igsc_device_handle *handle, IN uint32_t oprom_type, OUT struct igsc_oprom_version *version)
Retrieves the GSC OPROM version from the device.
IGSC_EXPORT int igsc_image_fwdata_iterator_next(IN struct igsc_fwdata_image *img, OUT struct igsc_fwdata_device_info *device)
progress the supported device iterator and return the GSC in-field data firmware device info ...
uint32_t oem_manuf_data_version_fitb
Definition: igsc_lib.h:200
IGSC_EXPORT int igsc_gfsp_heci_cmd(struct igsc_device_handle *handle, uint32_t gfsp_cmd, uint8_t *in_buffer, size_t in_buffer_size, uint8_t *out_buffer, size_t out_buffer_size, size_t *actual_out_buffer_size)
Send generic GFSP command and receive response.
IGSC_EXPORT uint8_t igsc_fwdata_version_compare(IN struct igsc_fwdata_version *image_ver, IN struct igsc_fwdata_version *device_ver)
Compares input GSC in-field data firmware update version to the flash one With ability to compare FW ...