drivers/input/serio/hp_sdc.c
Source file repositories/reference/linux-study-clean/drivers/input/serio/hp_sdc.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/input/serio/hp_sdc.c- Extension
.c- Size
- 29064 bytes
- Lines
- 1129
- Domain
- Driver Families
- Bucket
- drivers/input
- Inferred role
- Driver Families: exported/initcall integration point
- Status
- integration 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.
- 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.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/hp_sdc.hlinux/errno.hlinux/export.hlinux/init.hlinux/module.hlinux/ioport.hlinux/time.hlinux/semaphore.hlinux/slab.hlinux/hil.hasm/io.hasm/parisc-device.hlinux/uaccess.h
Detected Declarations
function hp_sdc_status_in8function hp_sdc_data_in8function hp_sdc_status_out8function hp_sdc_data_out8function hp_sdc_spin_ibffunction hp_sdc_takefunction hp_sdc_isrfunction hp_sdc_nmisrfunction hp_sdc_taskletfunction hp_sdc_putfunction __hp_sdc_enqueue_transactionfunction hp_sdc_enqueue_transactionfunction hp_sdc_dequeue_transactionfunction hp_sdc_request_timer_irqfunction hp_sdc_request_hil_irqfunction hp_sdc_request_cooked_irqfunction hp_sdc_release_timer_irqfunction hp_sdc_release_hil_irqfunction hp_sdc_release_cooked_irqfunction hp_sdc_kickerfunction hp_sdc_initfunction request_module_delayedfunction hp_sdc_init_hppafunction hp_sdc_exitfunction hp_sdc_registermodule init hp_sdc_registerexport hp_sdc_request_timer_irqexport hp_sdc_request_hil_irqexport hp_sdc_request_cooked_irqexport hp_sdc_release_timer_irqexport hp_sdc_release_hil_irqexport hp_sdc_release_cooked_irqexport __hp_sdc_enqueue_transactionexport hp_sdc_enqueue_transactionexport hp_sdc_dequeue_transaction
Annotated Snippet
module_init(hp_sdc_register);
module_exit(hp_sdc_exit);
/* Timing notes: These measurements taken on my 64MHz 7100-LC (715/64)
* cycles cycles-adj time
* between two consecutive mfctl(16)'s: 4 n/a 63ns
* hp_sdc_spin_ibf when idle: 119 115 1.7us
* gsc_writeb status register: 83 79 1.2us
* IBF to clear after sending SET_IM: 6204 6006 93us
* IBF to clear after sending LOAD_RT: 4467 4352 68us
* IBF to clear after sending two LOAD_RTs: 18974 18859 295us
* READ_T1, read status/data, IRQ, call handler: 35564 n/a 556us
* cmd to ~IBF READ_T1 2nd time right after: 5158403 n/a 81ms
* between IRQ received and ~IBF for above: 2578877 n/a 40ms
*
* Performance stats after a run of this module configuring HIL and
* receiving a few mouse events:
*
* status in8 282508 cycles 7128 calls
* status out8 8404 cycles 341 calls
* data out8 1734 cycles 78 calls
* isr 174324 cycles 617 calls (includes take)
* take 1241 cycles 2 calls
* put 1411504 cycles 6937 calls
* task 1655209 cycles 6937 calls (includes put)
*
*/
Annotation
- Immediate include surface: `linux/hp_sdc.h`, `linux/errno.h`, `linux/export.h`, `linux/init.h`, `linux/module.h`, `linux/ioport.h`, `linux/time.h`, `linux/semaphore.h`.
- Detected declarations: `function hp_sdc_status_in8`, `function hp_sdc_data_in8`, `function hp_sdc_status_out8`, `function hp_sdc_data_out8`, `function hp_sdc_spin_ibf`, `function hp_sdc_take`, `function hp_sdc_isr`, `function hp_sdc_nmisr`, `function hp_sdc_tasklet`, `function hp_sdc_put`.
- Atlas domain: Driver Families / drivers/input.
- Implementation status: integration implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.