drivers/hid/hid-nvidia-shield.c

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

File Facts

System
Linux kernel
Corpus path
drivers/hid/hid-nvidia-shield.c
Extension
.c
Size
31715 bytes
Lines
1135
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 power_supply_dev {
	struct power_supply *psy;
	struct power_supply_desc desc;
};

struct thunderstrike_psy_prop_values {
	int voltage_min;
	int voltage_now;
	int voltage_avg;
	int voltage_boot;
	int capacity;
	int status;
	int charge_type;
	int temp;
};

static const enum power_supply_property thunderstrike_battery_props[] = {
	POWER_SUPPLY_PROP_STATUS,
	POWER_SUPPLY_PROP_CHARGE_TYPE,
	POWER_SUPPLY_PROP_PRESENT,
	POWER_SUPPLY_PROP_VOLTAGE_MIN,
	POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
	POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
	POWER_SUPPLY_PROP_VOLTAGE_NOW,
	POWER_SUPPLY_PROP_VOLTAGE_AVG,
	POWER_SUPPLY_PROP_VOLTAGE_BOOT,
	POWER_SUPPLY_PROP_CAPACITY,
	POWER_SUPPLY_PROP_SCOPE,
	POWER_SUPPLY_PROP_TEMP,
	POWER_SUPPLY_PROP_TEMP_MIN,
	POWER_SUPPLY_PROP_TEMP_MAX,
	POWER_SUPPLY_PROP_TEMP_ALERT_MIN,
	POWER_SUPPLY_PROP_TEMP_ALERT_MAX,
};

enum thunderstrike_led_state {
	THUNDERSTRIKE_LED_OFF = 1,
	THUNDERSTRIKE_LED_ON = 8,
} __packed;
static_assert(sizeof(enum thunderstrike_led_state) == 1);

struct thunderstrike_hostcmd_battery {
	__le16 voltage_avg;
	u8 reserved_at_10;
	__le16 thermistor;
	__le16 voltage_min;
	__le16 voltage_boot;
	__le16 voltage_now;
	u8 capacity;
} __packed;

enum thunderstrike_charger_type {
	THUNDERSTRIKE_CHARGER_TYPE_NONE = 0,
	THUNDERSTRIKE_CHARGER_TYPE_TRICKLE,
	THUNDERSTRIKE_CHARGER_TYPE_NORMAL,
} __packed;
static_assert(sizeof(enum thunderstrike_charger_type) == 1);

enum thunderstrike_charger_state {
	THUNDERSTRIKE_CHARGER_STATE_UNKNOWN = 0,
	THUNDERSTRIKE_CHARGER_STATE_DISABLED,
	THUNDERSTRIKE_CHARGER_STATE_CHARGING,
	THUNDERSTRIKE_CHARGER_STATE_FULL,
	THUNDERSTRIKE_CHARGER_STATE_FAILED = 8,
} __packed;
static_assert(sizeof(enum thunderstrike_charger_state) == 1);

struct thunderstrike_hostcmd_charger {
	u8 connected;
	enum thunderstrike_charger_type type;
	enum thunderstrike_charger_state state;
} __packed;

struct thunderstrike_hostcmd_board_info {
	__le16 revision;
	__le16 serial[7];
} __packed;

struct thunderstrike_hostcmd_haptics {
	u8 motor_left;
	u8 motor_right;
} __packed;

struct thunderstrike_hostcmd_resp_report {
	u8 report_id; /* THUNDERSTRIKE_HOSTCMD_RESP_REPORT_ID */
	u8 cmd_id;
	u8 reserved_at_10;

	union {
		struct thunderstrike_hostcmd_board_info board_info;

Annotation

Implementation Notes