Intel Graphics System Controller Firmware Update Library
Intel Graphics System Controller Firmware Update Library
Loading...
Searching...
No Matches
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
10
11#ifndef __IGSC_LIB_H__
12#define __IGSC_LIB_H__
13
14#ifdef __cplusplus
15extern "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
48
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__
70typedef int igsc_handle_t;
71#define IGSC_INVALID_DEVICE_HANDLE (-1)
72#else /* __linux__ */
73typedef void *igsc_handle_t;
74#define IGSC_INVALID_DEVICE_HANDLE ((void *)0)
75#endif /* __linux__ */
76
86
94IGSC_EXPORT
95void igsc_set_log_level(unsigned int log_level);
96
102IGSC_EXPORT
103unsigned int igsc_get_log_level(void);
104
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
164
177
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
207
211#define IGSC_OPROM_VER_SIZE 8
218
227
236
247
258
263struct igsc_oprom_image;
264
269struct igsc_fwdata_image;
270
271
275struct igsc_device_iterator;
276
280#define IGSC_INFO_NAME_SIZE 256
281
287
288 uint16_t domain;
289 uint8_t bus;
290 uint8_t dev;
291 uint8_t func;
292
293 uint16_t device_id;
294 uint16_t 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)
323
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
355struct igsc_lib_ctx;
356
361 struct igsc_lib_ctx *ctx;
362};
363
368
376IGSC_EXPORT
378
386IGSC_EXPORT
387const char *igsc_translate_firmware_status(IN uint32_t firmware_status);
388
389#define IGSC_MAX_FW_STATUS_INDEX 5
390
400IGSC_EXPORT
402 IN uint32_t fwsts_index,
403 OUT uint32_t *fwsts_value);
404
412typedef void (*igsc_log_func_t)(enum igsc_log_level_type log_level, const char* fmt, ...);
413
425IGSC_EXPORT
427
433IGSC_EXPORT
435
444IGSC_EXPORT
446 IN const char *device_path);
447
457 IN igsc_handle_t dev_handle);
458
467IGSC_EXPORT
469 IN const struct igsc_device_info *dev_info);
470
479IGSC_EXPORT
481 OUT struct igsc_device_info *dev_info);
482
483
496IGSC_EXPORT
498 OUT struct igsc_device_info *dev_info);
499
507IGSC_EXPORT
508int igsc_device_close(IN OUT struct igsc_device_handle *handle);
509
518IGSC_EXPORT
520 OUT struct igsc_fw_version *version);
521
532IGSC_EXPORT
533int igsc_image_fw_version(IN const uint8_t *buffer,
534 IN uint32_t buffer_len,
535 OUT struct igsc_fw_version *version);
536
546IGSC_EXPORT
548 OUT struct igsc_hw_config *hw_config);
549
559IGSC_EXPORT
561 OUT struct igsc_subsystem_ids *ssids);
562
573IGSC_EXPORT
574int igsc_image_hw_config(IN const uint8_t *buffer,
575 IN uint32_t buffer_len,
576 OUT struct igsc_hw_config *hw_config);
577
587IGSC_EXPORT
588int igsc_hw_config_compatible(IN const struct igsc_hw_config *image_hw_config,
589 IN const struct igsc_hw_config *device_hw_config);
599IGSC_EXPORT
600int igsc_hw_config_to_string(IN const struct igsc_hw_config *hw_config,
601 IN char *buf, IN size_t length);
602
610typedef void (*igsc_progress_func_t)(uint32_t sent, uint32_t total, void *ctx);
611
624IGSC_EXPORT int
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
650IGSC_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
674IGSC_EXPORT int
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
693IGSC_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
711IGSC_EXPORT int
713 IN struct igsc_fwdata_image *img,
714 IN igsc_progress_func_t progress_f,
715 IN void *ctx);
716
726IGSC_EXPORT
728 IN const uint8_t *buffer,
729 IN uint32_t buffer_len);
730
739IGSC_EXPORT
741 OUT struct igsc_fwdata_version *version);
742
752IGSC_EXPORT
754 OUT struct igsc_fwdata_version2* version);
755
764IGSC_EXPORT
766 OUT struct igsc_fwdata_version *version);
767
777IGSC_EXPORT
779 OUT struct igsc_fwdata_version2* version);
780
795IGSC_EXPORT
797 IN struct igsc_fwdata_version *device_ver);
798
814IGSC_EXPORT
816 IN struct igsc_fwdata_version2* device_ver);
817
827IGSC_EXPORT
829 OUT uint32_t *count);
830
844IGSC_EXPORT
846 OUT struct igsc_fwdata_device_info *devices,
847 IN OUT uint32_t *count);
858IGSC_EXPORT
860 IN struct igsc_device_info *device);
868IGSC_EXPORT
870
880IGSC_EXPORT
882 OUT struct igsc_fwdata_device_info *device);
883
891IGSC_EXPORT
893
907IGSC_EXPORT
908uint8_t igsc_fw_version_compare(IN struct igsc_fw_version *image_ver,
909 IN struct igsc_fw_version *device_ver);
910
920IGSC_EXPORT
922 IN uint32_t oprom_type,
923 OUT struct igsc_oprom_version *version);
924
937IGSC_EXPORT
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);
947
957IGSC_EXPORT
959 IN const uint8_t *buffer,
960 IN uint32_t buffer_len);
961
971IGSC_EXPORT
973 IN enum igsc_oprom_type type,
974 OUT struct igsc_oprom_version *version);
975
985IGSC_EXPORT
987 IN uint32_t *oprom_type);
988
998IGSC_EXPORT
1000 OUT uint32_t *count);
1001
1015IGSC_EXPORT
1017 OUT struct igsc_oprom_device_info *devices,
1018 IN OUT uint32_t *count);
1030IGSC_EXPORT
1032 IN enum igsc_oprom_type request_type,
1033 IN struct igsc_device_info *device);
1041IGSC_EXPORT
1043
1053IGSC_EXPORT
1055 OUT struct igsc_oprom_device_info *device);
1056
1068IGSC_EXPORT
1070 IN uint32_t request_type,
1071 OUT uint32_t *count);
1072
1087IGSC_EXPORT
1089 IN uint32_t request_type,
1090 OUT struct igsc_oprom_device_info_4ids *devices,
1091 IN OUT uint32_t *count);
1100IGSC_EXPORT
1102 IN uint32_t request_type);
1103
1114IGSC_EXPORT
1116 IN uint32_t request_type,
1117 OUT struct igsc_oprom_device_info_4ids *device);
1118
1128IGSC_EXPORT
1130 IN uint32_t request_type,
1131 OUT bool *has_4ids_extension);
1132
1141IGSC_EXPORT
1143 OUT bool *has_2ids_extension);
1144
1153IGSC_EXPORT
1155 OUT bool *devid_enforced);
1156
1164IGSC_EXPORT
1166
1180IGSC_EXPORT
1181uint8_t igsc_oprom_version_compare(const struct igsc_oprom_version *image_ver,
1182 const struct igsc_oprom_version *device_ver);
1192IGSC_EXPORT
1193int igsc_image_get_type(IN const uint8_t *buffer,
1194 IN const uint32_t buffer_len,
1195 OUT uint8_t *type);
1199
1204
1212IGSC_EXPORT
1213int igsc_device_iterator_create(struct igsc_device_iterator **iter);
1214
1223IGSC_EXPORT
1224int igsc_device_iterator_next(struct igsc_device_iterator *iter,
1225 struct igsc_device_info *info);
1226
1234IGSC_EXPORT
1235void igsc_device_iterator_destroy(struct igsc_device_iterator *iter);
1239
1244
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
1283
1295IGSC_EXPORT
1297 OUT uint8_t *result,
1298 OUT uint32_t *supported_tests,
1299 OUT uint32_t *ifr_applied,
1300 OUT uint8_t *tiles_num);
1301
1314IGSC_EXPORT
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);
1324
1329
1334 uint32_t corr_err;
1335 uint32_t uncorr_err;
1336};
1337
1346
1355IGSC_EXPORT
1357 OUT uint32_t *max_num_of_tiles);
1358
1367IGSC_EXPORT
1369 IN OUT struct igsc_gfsp_mem_err *tiles);
1370
1379
1389
1405
1417IGSC_EXPORT
1419 OUT uint32_t *status,
1420 OUT uint32_t *extended_status,
1421 OUT uint32_t *pending_reset,
1422 OUT uint32_t *error_code);
1423
1435IGSC_EXPORT
1437 OUT uint32_t *status,
1438 OUT uint32_t *pending_reset,
1439 OUT uint32_t *error_code);
1440
1448
1457
1479
1488
1506IGSC_EXPORT
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
1522IGSC_EXPORT
1524 OUT uint16_t *supported_tiles);
1525
1537IGSC_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);
1553IGSC_EXPORT
1555 IN uint8_t req_ecc_state,
1556 OUT uint8_t *cur_ecc_state,
1557 OUT uint8_t *pen_ecc_state);
1558
1568IGSC_EXPORT
1570 OUT uint8_t *cur_ecc_state,
1571 OUT uint8_t *pen_ecc_state);
1572
1581IGSC_EXPORT
1583 OUT struct igsc_oem_version *version);
1584
1593IGSC_EXPORT
1595 OUT struct igsc_ifr_bin_version *version);
1596
1605IGSC_EXPORT
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
1624IGSC_EXPORT
1625int igsc_gfsp_get_health_indicator(IN struct igsc_device_handle *handle,
1626 OUT uint8_t *health_indicator);
1627
1641IGSC_EXPORT
1642int 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
1689IGSC_EXPORT
1690int 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 */
1703IGSC_EXPORT
1704int igsc_device_commit_arb_svn(IN struct igsc_device_handle *handle, uint8_t *fw_error);
1705
1714IGSC_EXPORT
1716 OUT uint8_t *min_allowed_svn);
1717
1721
1725
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
1744
1760
1769IGSC_EXPORT
1771 OUT uint32_t *device_count);
1772
1782IGSC_EXPORT
1784 OUT struct igsc_ppr_status *ppr_status);
1785
1789#ifdef __cplusplus
1790}
1791#endif
1792#endif /* __IGSC_LIB_H__ */
structure to store hw configuration
Definition igsc_lib.h:334
structure to store device subsystem ids
Definition igsc_lib.h:344
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.
ifr_test_run_status
Definition igsc_lib.h:1275
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_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_memory_ppr_devices(IN struct igsc_device_handle *handle, OUT uint32_t *device_count)
Retrieves GFSP number of memory PPR devices.
igsc_ppr_test_status_mask
Definition igsc_lib.h:1729
@ IFR_TEST_STATUS_SUBSLICE_FAILURE
Definition igsc_lib.h:1279
@ IFR_TEST_STATUS_ERROR
Definition igsc_lib.h:1281
@ IFR_TEST_STATUS_PASSED_WITH_RECOVERY
Definition igsc_lib.h:1278
@ IFR_TEST_STATUS_SUCCESS
Definition igsc_lib.h:1276
@ IFR_TEST_STATUS_PASSED_WITH_REPAIR
Definition igsc_lib.h:1277
@ IFR_TEST_STATUS_NON_SUBSLICE_FAILURE
Definition igsc_lib.h:1280
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 void igsc_device_iterator_destroy(struct igsc_device_iterator *iter)
Free iterator for devices capable of FW update.
IGSC_EXPORT int igsc_device_iterator_create(struct igsc_device_iterator **iter)
Create iterator for devices capable of FW update.
IGSC_EXPORT int igsc_device_close(IN OUT struct igsc_device_handle *handle)
Closes a GSC Firmware Update 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.
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.
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
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_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 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_fwdata_iterator_reset(IN struct igsc_fwdata_image *img)
reset the iterator over supported devices
IGSC_EXPORT const char * igsc_translate_firmware_status(IN uint32_t firmware_status)
Return the firmware status message corresponding to the code.
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_device_get_device_info(IN struct igsc_device_handle *handle, OUT struct igsc_device_info *dev_info)
Retrieve device information from the system.
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_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 ...
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 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.
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 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_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 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 uint32_t igsc_get_last_firmware_status(IN struct igsc_device_handle *handle)
Return the last firmware status 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.
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.
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.
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 igsc_log_func_t igsc_get_log_callback_func(void)
Retrieves log callback function pointer.
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_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 ...
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.
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_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_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_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.
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
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_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.
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.
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_image_fwdata_release(IN struct igsc_fwdata_image *img)
release the fwdata image handle
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...
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 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.
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_ifr_hw_capabilities_masks
Definition igsc_lib.h:1452
IGSC_EXPORT int igsc_device_commit_arb_svn(IN struct igsc_device_handle *handle, uint8_t *fw_error)
Sends ARB SVN Commit HECI command.
csc_late_binding_status
Definition igsc_lib.h:1666
igsc_ifr_repairs_mask
Definition igsc_lib.h:1483
igsc_ifr_array_scan_extended_status
Definition igsc_lib.h:1390
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_psc_version(IN struct igsc_device_handle *handle, OUT struct igsc_psc_version *version)
Retrieves the PSC Version from the device.
csc_late_binding_flags
Definition igsc_lib.h:1650
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_ifr_count_tiles(IN struct igsc_device_handle *handle, OUT uint16_t *supported_tiles)
Counts the IFR supported tiles.
igsc_ifr_supported_tests_masks
Definition igsc_lib.h:1444
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_gfsp_count_tiles(IN struct igsc_device_handle *handle, OUT uint32_t *max_num_of_tiles)
Gets number of tiles.
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_gfsp_memory_errors(IN struct igsc_device_handle *handle, IN OUT struct igsc_gfsp_mem_err *tiles)
Gets GFSP number of memory errors.
igsc_ifr_pending_reset
Definition igsc_lib.h:1374
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_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_ifr_array_scan_test_status_mask
Definition igsc_lib.h:1383
igsc_gfsp_health_indicators
Gets memory health indicator.
Definition igsc_lib.h:1609
igsc_ifr_previous_errors_masks
Definition igsc_lib.h:1461
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.
csc_late_binding_type
Sends Late Binding HECI command.
Definition igsc_lib.h:1657
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_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_IRF_HW_CAPABILITY_FULL_EU_MODE_SWITCH
Definition igsc_lib.h:1455
@ IGSC_IRF_HW_CAPABILITY_IN_FIELD_REPAIR
Definition igsc_lib.h:1453
@ IGSC_IFR_REPAIRS_MASK_ARRAY_REPAIR
Definition igsc_lib.h:1485
@ IGSC_IFR_REPAIRS_MASK_FAILURE
Definition igsc_lib.h:1486
@ IGSC_IFR_REPAIRS_MASK_DSS_EN_REPAIR
Definition igsc_lib.h:1484
@ IGSC_IFR_EXT_STS_NO_RESORCES
Definition igsc_lib.h:1400
@ IGSC_IFR_EXT_STS_REPAIRED_ARRAY_SUBSLICE
Definition igsc_lib.h:1397
@ IGSC_IFR_EXT_STS_DEEP_RST_PENDING
Definition igsc_lib.h:1393
@ IGSC_IFR_EXT_STS_NO_REPAIR_NEEDED
Definition igsc_lib.h:1394
@ IGSC_IFR_EXT_STS_REPAIRED_ARRAY
Definition igsc_lib.h:1395
@ IGSC_IFR_EXT_STS_PASSED
Definition igsc_lib.h:1391
@ IGSC_IFR_EXT_STS_NON_SUBSLICE_IN_ARRAY
Definition igsc_lib.h:1401
@ IGSC_IFR_EXT_STS_REPAIR_NOT_SUPPORTED
Definition igsc_lib.h:1399
@ IGSC_IFR_EXT_STS_REPAIRED_ARRAY_FAULTY_SUBSLICE
Definition igsc_lib.h:1398
@ IGSC_IFR_EXT_STS_NON_SUBSLICE_IN_SCAN
Definition igsc_lib.h:1402
@ IGSC_IFR_EXT_STS_TEST_ERROR
Definition igsc_lib.h:1403
@ IGSC_IFR_EXT_STS_REPAIRED_SUBSLICE
Definition igsc_lib.h:1396
@ IGSC_IFR_EXT_STS_SHALLOW_RST_PENDING
Definition igsc_lib.h:1392
@ IGSC_IFR_SUPPORTED_TESTS_MEMORY_PPR
Definition igsc_lib.h:1446
@ IGSC_IFR_SUPPORTED_TESTS_ARRAY_AND_SCAN
Definition igsc_lib.h:1445
@ IGSC_IFR_PENDING_RESET_NONE
Definition igsc_lib.h:1375
@ IGSC_IFR_PENDING_RESET_SHALLOW
Definition igsc_lib.h:1376
@ IGSC_IFR_PENDING_RESET_DEEP
Definition igsc_lib.h:1377
@ IGSC_ARRAY_SCAN_STATUS_FOUND_HW_ERROR_MASK
Definition igsc_lib.h:1386
@ IGSC_ARRAY_SCAN_STATUS_HW_REPAIR_MASK
Definition igsc_lib.h:1387
@ IGSC_ARRAY_SCAN_STATUS_TEST_EXECUTION_MASK
Definition igsc_lib.h:1384
@ IGSC_ARRAY_SCAN_STATUS_TEST_RESULT_MASK
Definition igsc_lib.h:1385
@ IGSC_IFR_PREV_ERROR_DSS_ERR_SCAN_STS_PKT
Definition igsc_lib.h:1468
@ IGSC_IFR_PREV_ERROR_NOT_ENOUGH_SPARE_DSS
Definition igsc_lib.h:1470
@ IGSC_IFR_PREV_ERROR_DSS_ERR_ARR_STS_PKT
Definition igsc_lib.h:1462
@ IGSC_IFR_PREV_ERROR_MIS_NON_DSS_STS_PKT_ON_SCAN
Definition igsc_lib.h:1474
@ IGSC_IFR_PREV_ERROR_DSS_UNREPAIRABLE_PKT
Definition igsc_lib.h:1465
@ IGSC_IFR_PREV_ERROR_MIS_DSS_STS_PKT_ON_ARR
Definition igsc_lib.h:1471
@ IGSC_IFR_PREV_ERROR_NON_DSS_ENG_DONE_CLR_IN_ARR
Definition igsc_lib.h:1476
@ IGSC_IFR_PREV_ERROR_UNEXPECTED
Definition igsc_lib.h:1477
@ IGSC_IFR_PREV_ERROR_MIS_NON_DSS_STS_PKT_ON_ARR
Definition igsc_lib.h:1472
@ IGSC_IFR_PREV_ERROR_NON_DSS_ERR_ARR_STS_PKT
Definition igsc_lib.h:1463
@ IGSC_IFR_PREV_ERROR_NON_DSS_UNREPAIRABLE_PKT
Definition igsc_lib.h:1467
@ IGSC_IFR_PREV_ERROR_DSS_ENG_DONE_CLR_IN_ARR
Definition igsc_lib.h:1475
@ IGSC_IFR_PREV_ERROR_MIS_DSS_STS_PKT_ON_SCAN
Definition igsc_lib.h:1473
@ IGSC_IFR_PREV_ERROR_NON_DSS_REPAIRABLE_PKT
Definition igsc_lib.h:1466
@ IGSC_IFR_PREV_ERROR_NON_DSS_ERR_SCAN_STS_PKT
Definition igsc_lib.h:1469
@ IGSC_IFR_PREV_ERROR_DSS_REPAIRABLE_PKT
Definition igsc_lib.h:1464
uint32_t data_arb_svn
Definition igsc_lib.h:204
uint32_t data_arb_svn_fitb
Definition igsc_lib.h:205
uint16_t device_id
Definition igsc_lib.h:293
uint16_t subsys_vendor_id
Definition igsc_lib.h:233
uint16_t hotfix
Definition igsc_lib.h:122
uint32_t date
Definition igsc_lib.h:140
igsc_supported_ifr_tests
Definition igsc_lib.h:1256
uint32_t num_devices
Definition igsc_lib.h:1757
uint32_t oem_manuf_data_version_fitb
Definition igsc_lib.h:200
@ IGSC_FWDATA_VERSION_OLDER_VCN
Definition igsc_lib.h:173
@ IGSC_FWDATA_VERSION_REJECT_DIFFERENT_PROJECT
Definition igsc_lib.h:171
@ IGSC_FWDATA_VERSION_REJECT_ARB_SVN
Definition igsc_lib.h:175
@ IGSC_FWDATA_VERSION_ACCEPT
Definition igsc_lib.h:172
@ IGSC_FWDATA_VERSION_REJECT_VCN
Definition igsc_lib.h:169
@ IGSC_FWDATA_VERSION_REJECT_OEM_MANUF_DATA_VERSION
Definition igsc_lib.h:170
@ IGSC_FWDATA_VERSION_REJECT_WRONG_FORMAT
Definition igsc_lib.h:174
uint16_t major_version
Definition igsc_lib.h:201
igsc_ifr_tiles
Definition igsc_lib.h:1248
uint16_t subsys_device_id
Definition igsc_lib.h:234
uint32_t ras_ppr_applied
Definition igsc_lib.h:1755
uint32_t cfg_version
Definition igsc_lib.h:141
uint8_t boot_time_memory_correction_pending
Definition igsc_lib.h:1749
char project[4]
Definition igsc_lib.h:121
uint32_t format_version
Definition igsc_lib.h:198
struct igsc_lib_ctx * ctx
Definition igsc_lib.h:361
igsc_ifr_repairs
Definition igsc_lib.h:1264
@ IGSC_IMAGE_TYPE_OPROM_CODE
Definition igsc_lib.h:112
@ IGSC_IMAGE_TYPE_UNKNOWN
Definition igsc_lib.h:109
@ IGSC_IMAGE_TYPE_FW_DATA
Definition igsc_lib.h:114
@ IGSC_IMAGE_TYPE_OPROM_DATA
Definition igsc_lib.h:113
@ IGSC_IMAGE_TYPE_OPROM
Definition igsc_lib.h:111
@ IGSC_IMAGE_TYPE_GFX_FW
Definition igsc_lib.h:110
uint8_t version[IGSC_OPROM_VER_SIZE]
Definition igsc_lib.h:216
uint16_t subsys_device_id
Definition igsc_lib.h:295
uint32_t oem_manuf_data_version
Definition igsc_lib.h:199
char name[IGSC_INFO_NAME_SIZE]
Definition igsc_lib.h:286
uint32_t oem_manuf_data_version
Definition igsc_lib.h:183
uint32_t mbist_completed
Definition igsc_lib.h:1756
@ IGSC_VERSION_OLDER
Definition igsc_lib.h:162
@ IGSC_VERSION_NEWER
Definition igsc_lib.h:160
@ IGSC_VERSION_ERROR
Definition igsc_lib.h:158
@ IGSC_VERSION_NOT_COMPATIBLE
Definition igsc_lib.h:159
@ IGSC_VERSION_EQUAL
Definition igsc_lib.h:161
@ IGSC_LOG_LEVEL_DEBUG
Definition igsc_lib.h:82
@ IGSC_LOG_LEVEL_TRACE
Definition igsc_lib.h:83
@ IGSC_LOG_LEVEL_MAX
Definition igsc_lib.h:84
@ IGSC_LOG_LEVEL_ERROR
Definition igsc_lib.h:81
uint16_t major_version
Definition igsc_lib.h:184
uint32_t num_of_tiles
Definition igsc_lib.h:1342
uint8_t test_run_status
Definition igsc_lib.h:1753
uint16_t length
Definition igsc_lib.h:150
uint8_t version[IGSC_MAX_OEM_VERSION_LENGTH]
Definition igsc_lib.h:151
struct igsc_device_mbist_ppr_status device_mbist_ppr_status[]
Definition igsc_lib.h:1758
uint16_t vendor_id
Definition igsc_lib.h:294
uint16_t subsys_vendor_id
Definition igsc_lib.h:296
uint16_t domain
Definition igsc_lib.h:288
uint8_t ppr_mode
Definition igsc_lib.h:1751
struct igsc_gfsp_tile_mem_err errors[]
Definition igsc_lib.h:1344
uint16_t build
Definition igsc_lib.h:123
@ IGSC_OPROM_DATA
Definition igsc_lib.h:224
@ IGSC_OPROM_CODE
Definition igsc_lib.h:225
@ IGSC_OPROM_NONE
Definition igsc_lib.h:223
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_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...
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.
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_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 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.
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_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
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_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_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...
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
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_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_oprom_iterator_reset(IN struct igsc_oprom_image *img)
reset the iterator over supported devices
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_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
IGSC_EXPORT int igsc_image_oprom_release(IN struct igsc_oprom_image *img)
release the OPROM image handle
IGSC_EXPORT unsigned int igsc_get_log_level(void)
Retrieves current log level.
#define IGSC_INFO_NAME_SIZE
Definition igsc_lib.h:280
igsc_fwdata_version_compare_result
Definition igsc_lib.h:168
void * igsc_handle_t
Definition igsc_lib.h:73
IGSC_EXPORT void igsc_set_log_level(unsigned int log_level)
Sets log level.
igsc_image_type
Definition igsc_lib.h:108
igsc_version_compare_result
Definition igsc_lib.h:157
igsc_log_level_type
Definition igsc_lib.h:80
#define IGSC_OPROM_VER_SIZE
Definition igsc_lib.h:211
igsc_oprom_type
Definition igsc_lib.h:222