STRUCT QUICKSPI_DEVICE(9)
π NAME π
okay so welcome to struct quickspi_device β the THC QuickSpi device struct, bestie. it's a 9 (kernel API manual) situation, and this page is basically the whole anatomy of the thing. let's get into it β¨
β¨ SYNOPSIS β¨
here's the whole struct, character for character, no notes, she's gorgeous:
struct quickspi_device {
struct device *dev;
struct pci_dev *pdev;
struct thc_device *thc_hw;
struct hid_device *hid_dev;
struct acpi_device *acpi_dev;
struct quickspi_driver_data *driver_data;
enum quickspi_dev_state state;
void __iomem *mem_addr;
struct hidspi_dev_descriptor dev_desc;
u32 input_report_hdr_addr;
u32 input_report_bdy_addr;
u32 output_report_addr;
u32 spi_freq_val;
u32 spi_read_io_mode;
u32 spi_write_io_mode;
u32 spi_read_opcode;
u32 spi_write_opcode;
u32 limit_packet_size;
u32 spi_packet_size;
u32 performance_limit;
u32 active_ltr_val;
u32 low_power_ltr_val;
u8 *report_descriptor;
u8 *input_buf;
u8 *report_buf;
u32 report_buf_size;
u32 report_len;
wait_queue_head_t reset_ack_wq;
bool reset_ack;
wait_queue_head_t nondma_int_received_wq;
bool nondma_int_received;
wait_queue_head_t report_desc_got_wq;
bool report_desc_got;
wait_queue_head_t get_report_cmpl_wq;
bool get_report_cmpl;
wait_queue_head_t set_report_cmpl_wq;
bool set_report_cmpl;
struct work_struct recover_work;
bool recovery_disabled;
};
πΈ Members πΈ
okay so field by field, and yes i'm doing all of them, we don't skip π
devβ points at the kernel device π«Άpdevβ points at the PCI devicethc_hwβ points at the THC devicehid_devβ points at the hid deviceacpi_devβ points at the ACPI devicedriver_dataβ points at the quickspi-specific driver datastateβ the THC SPI device statemem_addrβ the MMIO memory address β¨dev_descβ device descriptor for the HIDSPI protocolinput_report_hdr_addrβ device input report header addressinput_report_bdy_addrβ device input report body addressspi_freq_valβ device supported max SPI frequency, in Hz β‘spi_read_io_modeβ device supported SPI read io modespi_write_io_modeβ device supported SPI write io modespi_read_opcodeβ device read opcodespi_write_opcodeβ device write opcodelimit_packet_sizeβ1means limit read/write packet to64Bytes;0means the device has no packet size limitation for read/write πperformance_limitβ delay time, in ms. if the device has a performance limitation, you must give a delay before a write operation after a read operation. like, she needs a lil breather, respect it πactive_ltr_valβ THC active LTR valuelow_power_ltr_valβ THC low power LTR valuereport_descriptorβ stores a copy of the device report descriptorinput_bufβ stores a copy of the latest input report datareport_bufβ stores a copy of the latest input/output report packet from set/get featurereport_lenβ the length of the input/output report packetreset_ack_wqβ workqueue for waiting on the reset response from the devicereset_ackβ indicates whether the reset response was received or notnondma_int_received_wqβ workqueue for waiting on the THC non-DMA interruptnondma_int_receivedβ indicates whether the THC non-DMA interrupt was received or notreport_desc_got_wqβ workqueue for waiting on the device report descriptorreport_desc_gotβ indicates whether the device report descriptor was received or notrecover_workβ the work structure for recovery π₯recovery_disabledβ whether the recovery work is blocked during teardown
ngl a few fields are chilling in the struct up there and the Members list just doesn't describe them:output_report_addr,spi_packet_size,report_buf_size,get_report_cmpl_wq,get_report_cmpl,set_report_cmpl_wq, andset_report_cmpl. they're real, they exist, the page just doesn't say more. no cap π€·ββοΈ
π¦ SEE ALSO π¦
- kernel file
./drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.hπ struct quickspi_driver_data(9)β go read her next, she's the other half of the vibe iykyk
and that's the whole page bestie π this one came out of ./drivers/hid/intel-thc-hid/in... (yeah the path got cut off in the footer, tragic, but that's literally what it says) and it's dated October 2026. slay πβ¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms