drivers/net/wireless/marvell/libertas/if_spi.c
Source file repositories/reference/linux-study-clean/drivers/net/wireless/marvell/libertas/if_spi.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/marvell/libertas/if_spi.c- Extension
.c- Size
- 31265 bytes
- Lines
- 1290
- Domain
- Driver Families
- Bucket
- drivers/net
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/hardirq.hlinux/interrupt.hlinux/module.hlinux/firmware.hlinux/jiffies.hlinux/list.hlinux/netdevice.hlinux/slab.hlinux/spi/libertas_spi.hlinux/spi/spi.hhost.hdecl.hdefs.hdev.hif_spi.h
Detected Declarations
struct if_spi_packetstruct if_spi_cardfunction free_if_spi_cardfunction list_for_each_entry_safefunction spu_transaction_initfunction spu_transaction_finishfunction spu_writefunction spu_write_u16function spu_reg_is_port_regfunction spu_readfunction spu_read_u16function spu_read_u32function spu_wait_for_u16function spu_wait_for_u32function spu_set_interrupt_modefunction spu_get_chip_revisionfunction spu_set_bus_modefunction spu_initfunction if_spi_prog_helper_firmwarefunction if_spi_prog_main_firmware_check_lenfunction if_spi_prog_main_firmwarefunction if_spi_c2h_cmdfunction if_spi_c2h_datafunction if_spi_h2cfunction if_spi_e2hfunction if_spi_host_to_card_workerfunction if_spi_host_to_cardfunction if_spi_host_interruptfunction if_spi_init_cardfunction if_spi_resume_workerfunction if_spi_probefunction libertas_spi_removefunction if_spi_suspendfunction if_spi_resumefunction if_spi_init_modulefunction if_spi_exit_modulemodule init if_spi_init_module
Annotated Snippet
module_init(if_spi_init_module);
module_exit(if_spi_exit_module);
MODULE_DESCRIPTION("Libertas SPI WLAN Driver");
MODULE_AUTHOR("Andrey Yurovsky <andrey@cozybit.com>, "
"Colin McCabe <colin@cozybit.com>");
MODULE_LICENSE("GPL");
MODULE_ALIAS("spi:libertas_spi");
Annotation
- Immediate include surface: `linux/hardirq.h`, `linux/interrupt.h`, `linux/module.h`, `linux/firmware.h`, `linux/jiffies.h`, `linux/list.h`, `linux/netdevice.h`, `linux/slab.h`.
- Detected declarations: `struct if_spi_packet`, `struct if_spi_card`, `function free_if_spi_card`, `function list_for_each_entry_safe`, `function spu_transaction_init`, `function spu_transaction_finish`, `function spu_write`, `function spu_write_u16`, `function spu_reg_is_port_reg`, `function spu_read`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: integration implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- 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.