drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h

Source file repositories/reference/linux-study-clean/drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h

File Facts

System
Linux kernel
Corpus path
drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h
Extension
.h
Size
6046 bytes
Lines
200
Domain
Driver Families
Bucket
drivers/platform
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct enumeration_data {
	struct kobject *attr_name_kobj;
	char display_name_language_code[MAX_BUFF];
	char dell_value_modifier[MAX_BUFF];
	char possible_values[MAX_BUFF];
	char attribute_name[MAX_BUFF];
	char default_value[MAX_BUFF];
	char dell_modifier[MAX_BUFF];
	char display_name[MAX_BUFF];
};

struct integer_data {
	struct kobject *attr_name_kobj;
	char display_name_language_code[MAX_BUFF];
	char attribute_name[MAX_BUFF];
	char dell_modifier[MAX_BUFF];
	char display_name[MAX_BUFF];
	int scalar_increment;
	int default_value;
	int min_value;
	int max_value;
};

struct str_data {
	struct kobject *attr_name_kobj;
	char display_name_language_code[MAX_BUFF];
	char attribute_name[MAX_BUFF];
	char display_name[MAX_BUFF];
	char default_value[MAX_BUFF];
	char dell_modifier[MAX_BUFF];
	int min_length;
	int max_length;
};

struct po_data {
	struct kobject *attr_name_kobj;
	char attribute_name[MAX_BUFF];
	int min_password_length;
	int max_password_length;
};

struct wmi_sysman_priv {
	char current_admin_password[MAX_BUFF];
	char current_system_password[MAX_BUFF];
	struct wmi_device *password_attr_wdev;
	struct wmi_device *bios_attr_wdev;
	struct kset *authentication_dir_kset;
	struct kset *main_dir_kset;
	struct device *class_dev;
	struct enumeration_data *enumeration_data;
	int enumeration_instances_count;
	struct integer_data *integer_data;
	int integer_instances_count;
	struct str_data *str_data;
	int str_instances_count;
	struct po_data *po_data;
	int po_instances_count;
	bool pending_changes;
	struct mutex mutex;
};

/* global structure used by multiple WMI interfaces */
extern struct wmi_sysman_priv wmi_priv;

enum { ENUM, INT, STR, PO };

#define ENUM_MIN_ELEMENTS		8
#define INT_MIN_ELEMENTS		9
#define STR_MIN_ELEMENTS		8
#define PO_MIN_ELEMENTS			4

enum {
	ATTR_NAME,
	DISPL_NAME_LANG_CODE,
	DISPLAY_NAME,
	DEFAULT_VAL,
	CURRENT_VAL,
	MODIFIER
};

#define get_instance_id(type)							\
static int get_##type##_instance_id(struct kobject *kobj)			\
{										\
	int i;									\
	for (i = 0; i <= wmi_priv.type##_instances_count; i++) {		\
		if (!(strcmp(kobj->name, wmi_priv.type##_data[i].attribute_name)))\
			return i;						\
	}									\
	return -EIO;								\
}

Annotation

Implementation Notes