1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _LINUX_EFI_EMBEDDED_FW_H 3*4882a593Smuzhiyun #define _LINUX_EFI_EMBEDDED_FW_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/list.h> 6*4882a593Smuzhiyun #include <linux/mod_devicetable.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #define EFI_EMBEDDED_FW_PREFIX_LEN 8 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun /* 11*4882a593Smuzhiyun * This struct is private to the efi-embedded fw implementation. 12*4882a593Smuzhiyun * They are in this header for use by lib/test_firmware.c only! 13*4882a593Smuzhiyun */ 14*4882a593Smuzhiyun struct efi_embedded_fw { 15*4882a593Smuzhiyun struct list_head list; 16*4882a593Smuzhiyun const char *name; 17*4882a593Smuzhiyun const u8 *data; 18*4882a593Smuzhiyun size_t length; 19*4882a593Smuzhiyun }; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /** 22*4882a593Smuzhiyun * struct efi_embedded_fw_desc - This struct is used by the EFI embedded-fw 23*4882a593Smuzhiyun * code to search for embedded firmwares. 24*4882a593Smuzhiyun * 25*4882a593Smuzhiyun * @name: Name to register the firmware with if found 26*4882a593Smuzhiyun * @prefix: First 8 bytes of the firmware 27*4882a593Smuzhiyun * @length: Length of the firmware in bytes including prefix 28*4882a593Smuzhiyun * @sha256: SHA256 of the firmware 29*4882a593Smuzhiyun */ 30*4882a593Smuzhiyun struct efi_embedded_fw_desc { 31*4882a593Smuzhiyun const char *name; 32*4882a593Smuzhiyun u8 prefix[EFI_EMBEDDED_FW_PREFIX_LEN]; 33*4882a593Smuzhiyun u32 length; 34*4882a593Smuzhiyun u8 sha256[32]; 35*4882a593Smuzhiyun }; 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun extern const struct dmi_system_id touchscreen_dmi_table[]; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun int efi_get_embedded_fw(const char *name, const u8 **dat, size_t *sz); 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun #endif 42