brintos

brintos / linux-shallow public Read only

0
0
Text · 2.6 KiB · e1975ff Raw
120 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2 3#ifndef _THINK_LMI_H_4#define _THINK_LMI_H_5 6#include <linux/types.h>7 8#define TLMI_SETTINGS_COUNT  2569#define TLMI_SETTINGS_MAXLEN 51210#define TLMI_PWD_BUFSIZE     12911#define TLMI_LANG_MAXLEN       412#define TLMI_INDEX_MAX        3213 14/* Possible error values */15struct tlmi_err_codes {16	const char *err_str;17	int err_code;18};19 20enum encoding_option {21	TLMI_ENCODING_ASCII,22	TLMI_ENCODING_SCANCODE,23};24 25enum level_option {26	TLMI_LEVEL_USER,27	TLMI_LEVEL_MASTER,28};29 30/*31 * There are a limit on the number of WMI operations you can do if you use32 * the default implementation of saving on every set. This is due to a33 * limitation in EFI variable space used.34 * Have a 'bulk save' mode where you can manually trigger the save, and can35 * therefore set unlimited variables - for users that need it.36 */37enum save_mode {38	TLMI_SAVE_SINGLE,39	TLMI_SAVE_BULK,40	TLMI_SAVE_SAVE,41};42 43/* password configuration details */44struct tlmi_pwdcfg_core {45	uint32_t password_mode;46	uint32_t password_state;47	uint32_t min_length;48	uint32_t max_length;49	uint32_t supported_encodings;50	uint32_t supported_keyboard;51};52 53struct tlmi_pwdcfg_ext {54	uint32_t hdd_user_password;55	uint32_t hdd_master_password;56	uint32_t nvme_user_password;57	uint32_t nvme_master_password;58};59 60struct tlmi_pwdcfg {61	struct tlmi_pwdcfg_core core;62	struct tlmi_pwdcfg_ext ext;63};64 65/* password setting details */66struct tlmi_pwd_setting {67	struct kobject kobj;68	bool valid;69	char password[TLMI_PWD_BUFSIZE];70	const char *pwd_type;71	const char *role;72	int minlen;73	int maxlen;74	enum encoding_option encoding;75	char kbdlang[TLMI_LANG_MAXLEN];76	int index; /*Used for HDD and NVME auth */77	enum level_option level;78	bool cert_installed;79	char *signature;80	char *save_signature;81};82 83/* Attribute setting details */84struct tlmi_attr_setting {85	struct kobject kobj;86	int index;87	char display_name[TLMI_SETTINGS_MAXLEN];88	char *possible_values;89};90 91struct think_lmi {92	struct wmi_device *wmi_device;93 94	bool can_set_bios_settings;95	bool can_get_bios_selections;96	bool can_set_bios_password;97	bool can_get_password_settings;98	bool pending_changes;99	bool can_debug_cmd;100	bool opcode_support;101	bool certificate_support;102	enum save_mode save_mode;103	bool save_required;104	bool reboot_required;105 106	struct tlmi_attr_setting *setting[TLMI_SETTINGS_COUNT];107	struct device *class_dev;108	struct kset *attribute_kset;109	struct kset *authentication_kset;110 111	struct tlmi_pwdcfg pwdcfg;112	struct tlmi_pwd_setting *pwd_admin;113	struct tlmi_pwd_setting *pwd_power;114	struct tlmi_pwd_setting *pwd_system;115	struct tlmi_pwd_setting *pwd_hdd;116	struct tlmi_pwd_setting *pwd_nvme;117};118 119#endif /* !_THINK_LMI_H_ */120