Loading...
Note: File does not exist in v4.6.
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 256
9#define TLMI_SETTINGS_MAXLEN 512
10#define TLMI_PWD_BUFSIZE 129
11#define TLMI_LANG_MAXLEN 4
12
13/* Possible error values */
14struct tlmi_err_codes {
15 const char *err_str;
16 int err_code;
17};
18
19enum encoding_option {
20 TLMI_ENCODING_ASCII,
21 TLMI_ENCODING_SCANCODE,
22};
23
24/* password configuration details */
25struct tlmi_pwdcfg {
26 uint32_t password_mode;
27 uint32_t password_state;
28 uint32_t min_length;
29 uint32_t max_length;
30 uint32_t supported_encodings;
31 uint32_t supported_keyboard;
32};
33
34/* password setting details */
35struct tlmi_pwd_setting {
36 struct kobject kobj;
37 bool valid;
38 char password[TLMI_PWD_BUFSIZE];
39 const char *pwd_type;
40 const char *role;
41 int minlen;
42 int maxlen;
43 enum encoding_option encoding;
44 char kbdlang[TLMI_LANG_MAXLEN];
45};
46
47/* Attribute setting details */
48struct tlmi_attr_setting {
49 struct kobject kobj;
50 int index;
51 char display_name[TLMI_SETTINGS_MAXLEN];
52 char *possible_values;
53};
54
55struct think_lmi {
56 struct wmi_device *wmi_device;
57
58 int settings_count;
59 bool can_set_bios_settings;
60 bool can_get_bios_selections;
61 bool can_set_bios_password;
62 bool can_get_password_settings;
63 bool pending_changes;
64
65 struct tlmi_attr_setting *setting[TLMI_SETTINGS_COUNT];
66 struct device *class_dev;
67 struct kset *attribute_kset;
68 struct kset *authentication_kset;
69 struct tlmi_pwd_setting *pwd_admin;
70 struct tlmi_pwd_setting *pwd_power;
71};
72
73#endif /* !_THINK_LMI_H_ */