drivers/hid/hid-oxp.c

Source file repositories/reference/linux-study-clean/drivers/hid/hid-oxp.c

File Facts

System
Linux kernel
Corpus path
drivers/hid/hid-oxp.c
Extension
.c
Size
41437 bytes
Lines
1581
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 oxp_button_data {
	u8 mode;
	u8 index;
	u8 key_id;
	u8 padding[2];
} __packed;

struct oxp_button_entry {
	struct oxp_button_data data;
	const char *name;
};

static const struct oxp_button_entry oxp_button_table[] = {
	/* Gamepad Buttons */
	{ { OXP_MAPPING_GAMEPAD, 0x01 }, "BTN_A" },
	{ { OXP_MAPPING_GAMEPAD, 0x02 }, "BTN_B" },
	{ { OXP_MAPPING_GAMEPAD, 0x03 }, "BTN_X" },
	{ { OXP_MAPPING_GAMEPAD, 0x04 }, "BTN_Y" },
	{ { OXP_MAPPING_GAMEPAD, 0x05 }, "BTN_LB" },
	{ { OXP_MAPPING_GAMEPAD, 0x06 }, "BTN_RB" },
	{ { OXP_MAPPING_GAMEPAD, 0x07 }, "BTN_LT" },
	{ { OXP_MAPPING_GAMEPAD, 0x08 }, "BTN_RT" },
	{ { OXP_MAPPING_GAMEPAD, 0x09 }, "BTN_START" },
	{ { OXP_MAPPING_GAMEPAD, 0x0a }, "BTN_SELECT" },
	{ { OXP_MAPPING_GAMEPAD, 0x0b }, "BTN_L3" },
	{ { OXP_MAPPING_GAMEPAD, 0x0c }, "BTN_R3" },
	{ { OXP_MAPPING_GAMEPAD, 0x0d }, "DPAD_UP" },
	{ { OXP_MAPPING_GAMEPAD, 0x0e }, "DPAD_DOWN" },
	{ { OXP_MAPPING_GAMEPAD, 0x0f }, "DPAD_LEFT" },
	{ { OXP_MAPPING_GAMEPAD, 0x10 }, "DPAD_RIGHT" },
	{ { OXP_MAPPING_GAMEPAD, 0x11 }, "JOY_L_UP" },
	{ { OXP_MAPPING_GAMEPAD, 0x12 }, "JOY_L_UP_RIGHT" },
	{ { OXP_MAPPING_GAMEPAD, 0x13 }, "JOY_L_RIGHT" },
	{ { OXP_MAPPING_GAMEPAD, 0x14 }, "JOY_L_DOWN_RIGHT" },
	{ { OXP_MAPPING_GAMEPAD, 0x15 }, "JOY_L_DOWN" },
	{ { OXP_MAPPING_GAMEPAD, 0x16 }, "JOY_L_DOWN_LEFT" },
	{ { OXP_MAPPING_GAMEPAD, 0x17 }, "JOY_L_LEFT" },
	{ { OXP_MAPPING_GAMEPAD, 0x18 }, "JOY_L_UP_LEFT" },
	{ { OXP_MAPPING_GAMEPAD, 0x19 }, "JOY_R_UP" },
	{ { OXP_MAPPING_GAMEPAD, 0x1a }, "JOY_R_UP_RIGHT" },
	{ { OXP_MAPPING_GAMEPAD, 0x1b }, "JOY_R_RIGHT" },
	{ { OXP_MAPPING_GAMEPAD, 0x1c }, "JOY_R_DOWN_RIGHT" },
	{ { OXP_MAPPING_GAMEPAD, 0x1d }, "JOY_R_DOWN" },
	{ { OXP_MAPPING_GAMEPAD, 0x1e }, "JOY_R_DOWN_LEFT" },
	{ { OXP_MAPPING_GAMEPAD, 0x1f }, "JOY_R_LEFT" },
	{ { OXP_MAPPING_GAMEPAD, 0x20 }, "JOY_R_UP_LEFT" },
	{ { OXP_MAPPING_GAMEPAD, 0x22 }, "BTN_GUIDE" },
	/* Keyboard Keys */
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x5a }, "KEY_F1" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x5b }, "KEY_F2" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x5c }, "KEY_F3" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x5d }, "KEY_F4" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x5e }, "KEY_F5" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x5f }, "KEY_F6" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x60 }, "KEY_F7" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x61 }, "KEY_F8" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x62 }, "KEY_F9" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x63 }, "KEY_F10" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x64 }, "KEY_F11" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x65 }, "KEY_F12" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x66 }, "KEY_F13" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x67 }, "KEY_F14" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x68 }, "KEY_F15" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x69 }, "KEY_F16" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x6a }, "KEY_F17" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x6b }, "KEY_F18" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x6c }, "KEY_F19" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x6d }, "KEY_F20" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x6e }, "KEY_F21" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x6f }, "KEY_F22" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x70 }, "KEY_F23" },
	{ { OXP_MAPPING_KEYBOARD, 0x01, 0x71 }, "KEY_F24" },
};

enum oxp_joybutton_index {
	BUTTON_A =	0x01,
	BUTTON_B,
	BUTTON_X,
	BUTTON_Y,
	BUTTON_LB,
	BUTTON_RB,
	BUTTON_LT,
	BUTTON_RT,
	BUTTON_START,
	BUTTON_SELECT,
	BUTTON_L3,
	BUTTON_R3,
	BUTTON_DUP,
	BUTTON_DDOWN,
	BUTTON_DLEFT,

Annotation

Implementation Notes