123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /* SPDX-License-Identifier: GPL-2.0-or-later */
- #ifndef _THINK_LMI_H_
- #define _THINK_LMI_H_
- #include <linux/types.h>
- #define TLMI_SETTINGS_COUNT 256
- #define TLMI_SETTINGS_MAXLEN 512
- #define TLMI_PWD_BUFSIZE 129
- #define TLMI_LANG_MAXLEN 4
- #define TLMI_INDEX_MAX 32
- /* Possible error values */
- struct tlmi_err_codes {
- const char *err_str;
- int err_code;
- };
- enum encoding_option {
- TLMI_ENCODING_ASCII,
- TLMI_ENCODING_SCANCODE,
- };
- enum level_option {
- TLMI_LEVEL_USER,
- TLMI_LEVEL_MASTER,
- };
- /* password configuration details */
- struct tlmi_pwdcfg_core {
- uint32_t password_mode;
- uint32_t password_state;
- uint32_t min_length;
- uint32_t max_length;
- uint32_t supported_encodings;
- uint32_t supported_keyboard;
- };
- struct tlmi_pwdcfg_ext {
- uint32_t hdd_user_password;
- uint32_t hdd_master_password;
- uint32_t nvme_user_password;
- uint32_t nvme_master_password;
- };
- struct tlmi_pwdcfg {
- struct tlmi_pwdcfg_core core;
- struct tlmi_pwdcfg_ext ext;
- };
- /* password setting details */
- struct tlmi_pwd_setting {
- struct kobject kobj;
- bool valid;
- char password[TLMI_PWD_BUFSIZE];
- const char *pwd_type;
- const char *role;
- int minlen;
- int maxlen;
- enum encoding_option encoding;
- char kbdlang[TLMI_LANG_MAXLEN];
- int index; /*Used for HDD and NVME auth */
- enum level_option level;
- bool cert_installed;
- char *signature;
- char *save_signature;
- };
- /* Attribute setting details */
- struct tlmi_attr_setting {
- struct kobject kobj;
- int index;
- char display_name[TLMI_SETTINGS_MAXLEN];
- char *possible_values;
- };
- struct think_lmi {
- struct wmi_device *wmi_device;
- bool can_set_bios_settings;
- bool can_get_bios_selections;
- bool can_set_bios_password;
- bool can_get_password_settings;
- bool pending_changes;
- bool can_debug_cmd;
- bool opcode_support;
- bool certificate_support;
- struct tlmi_attr_setting *setting[TLMI_SETTINGS_COUNT];
- struct device *class_dev;
- struct kset *attribute_kset;
- struct kset *authentication_kset;
- struct tlmi_pwdcfg pwdcfg;
- struct tlmi_pwd_setting *pwd_admin;
- struct tlmi_pwd_setting *pwd_power;
- struct tlmi_pwd_setting *pwd_system;
- struct tlmi_pwd_setting *pwd_hdd;
- struct tlmi_pwd_setting *pwd_nvme;
- };
- #endif /* !_THINK_LMI_H_ */
|