drivers/hid/hid-lenovo-go-s.c

Source file repositories/reference/linux-study-clean/drivers/hid/hid-lenovo-go-s.c

File Facts

System
Linux kernel
Corpus path
drivers/hid/hid-lenovo-go-s.c
Extension
.c
Size
36939 bytes
Lines
1550
Domain
Driver Families
Bucket
drivers/hid
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 gos_cfg_attr {
	u8 index;
};

struct command_report {
	u8 cmd;
	u8 sub_cmd;
	u8 data[63];
} __packed;

struct version_report {
	u8 cmd;
	u32 version;
	u8 reserved[59];
} __packed;

enum mcu_command_index {
	GET_VERSION = 0x01,
	GET_MCU_ID,
	GET_GAMEPAD_CFG,
	SET_GAMEPAD_CFG,
	GET_TP_PARAM,
	SET_TP_PARAM,
	GET_RGB_CFG = 0x0f,
	SET_RGB_CFG,
	GET_PL_TEST = 0xdf,
};

enum feature_enabled_index {
	FEATURE_DISABLED,
	FEATURE_ENABLED,
};

static const char *const feature_enabled_text[] = {
	[FEATURE_DISABLED] = "false",
	[FEATURE_ENABLED] = "true",
};

enum feature_status_index {
	FEATURE_NONE = 0x00,
	FEATURE_GAMEPAD_MODE = 0x01,
	FEATURE_AUTO_SLEEP_TIME = 0x04,
	FEATURE_IMU_BYPASS,
	FEATURE_RGB_ENABLE,
	FEATURE_IMU_ENABLE,
	FEATURE_TOUCHPAD_ENABLE,
	FEATURE_OS_MODE = 0x0A,
	FEATURE_POLL_RATE = 0x10,
	FEATURE_DPAD_MODE,
	FEATURE_MOUSE_WHEEL_STEP,
};

enum gamepad_mode_index {
	XINPUT,
	DINPUT,
};

static const char *const gamepad_mode_text[] = {
	[XINPUT] = "xinput",
	[DINPUT] = "dinput",
};

enum os_type_index {
	WINDOWS,
	LINUX,
};

static const char *const os_type_text[] = {
	[WINDOWS] = "windows",
	[LINUX] = "linux",
};

enum poll_rate_index {
	HZ125,
	HZ250,
	HZ500,
	HZ1000,
};

static const char *const poll_rate_text[] = {
	[HZ125] = "125",
	[HZ250] = "250",
	[HZ500] = "500",
	[HZ1000] = "1000",
};

enum dpad_mode_index {
	DIR8,
	DIR4,
};

Annotation

Implementation Notes