drivers/input/misc/iqs626a.c

Source file repositories/reference/linux-study-clean/drivers/input/misc/iqs626a.c

File Facts

System
Linux kernel
Corpus path
drivers/input/misc/iqs626a.c
Extension
.c
Size
48182 bytes
Lines
1822
Domain
Driver Families
Bucket
drivers/input
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 iqs626_event_desc {
	const char *name;
	enum iqs626_st_offs st_offs;
	enum iqs626_th_offs th_offs;
	bool dir_up;
	u8 mask;
};

static const struct iqs626_event_desc iqs626_events[] = {
	[IQS626_EVENT_PROX_DN] = {
		.name = "event-prox",
		.st_offs = IQS626_ST_OFFS_PROX,
		.th_offs = IQS626_TH_OFFS_PROX,
		.mask = IQS626_EVENT_MASK_PROX,
	},
	[IQS626_EVENT_PROX_UP] = {
		.name = "event-prox-alt",
		.st_offs = IQS626_ST_OFFS_PROX,
		.th_offs = IQS626_TH_OFFS_PROX,
		.dir_up = true,
		.mask = IQS626_EVENT_MASK_PROX,
	},
	[IQS626_EVENT_TOUCH_DN] = {
		.name = "event-touch",
		.st_offs = IQS626_ST_OFFS_TOUCH,
		.th_offs = IQS626_TH_OFFS_TOUCH,
		.mask = IQS626_EVENT_MASK_TOUCH,
	},
	[IQS626_EVENT_TOUCH_UP] = {
		.name = "event-touch-alt",
		.st_offs = IQS626_ST_OFFS_TOUCH,
		.th_offs = IQS626_TH_OFFS_TOUCH,
		.dir_up = true,
		.mask = IQS626_EVENT_MASK_TOUCH,
	},
	[IQS626_EVENT_DEEP_DN] = {
		.name = "event-deep",
		.st_offs = IQS626_ST_OFFS_DEEP,
		.th_offs = IQS626_TH_OFFS_DEEP,
		.mask = IQS626_EVENT_MASK_DEEP,
	},
	[IQS626_EVENT_DEEP_UP] = {
		.name = "event-deep-alt",
		.st_offs = IQS626_ST_OFFS_DEEP,
		.th_offs = IQS626_TH_OFFS_DEEP,
		.dir_up = true,
		.mask = IQS626_EVENT_MASK_DEEP,
	},
};

struct iqs626_ver_info {
	u8 prod_num;
	u8 sw_num;
	u8 hw_num;
	u8 padding;
} __packed;

struct iqs626_flags {
	__be16 system;
	u8 gesture;
	u8 padding_a;
	u8 states[4];
	u8 ref_active;
	u8 padding_b;
	u8 comp_min;
	u8 comp_max;
	u8 trackpad_x;
	u8 trackpad_y;
} __packed;

struct iqs626_ch_reg_ulp {
	u8 thresh[2];
	u8 hyst;
	u8 filter;
	u8 engine[2];
	u8 ati_target;
	u8 padding;
	__be16 ati_comp;
	u8 rx_enable;
	u8 tx_enable;
} __packed;

struct iqs626_ch_reg_tp {
	u8 thresh;
	u8 ati_base;
	__be16 ati_comp;
} __packed;

struct iqs626_tp_grp_reg {
	u8 hyst;

Annotation

Implementation Notes