drivers/bluetooth/btmrvl_sdio.c
Source file repositories/reference/linux-study-clean/drivers/bluetooth/btmrvl_sdio.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/bluetooth/btmrvl_sdio.c- Extension
.c- Size
- 41868 bytes
- Lines
- 1782
- Domain
- Driver Families
- Bucket
- drivers/bluetooth
- 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/firmware.hlinux/slab.hlinux/suspend.hlinux/mmc/sdio_ids.hlinux/mmc/sdio_func.hlinux/module.hlinux/devcoredump.hnet/bluetooth/bluetooth.hnet/bluetooth/hci_core.hbtmrvl_drv.hbtmrvl_sdio.h
Detected Declarations
function btmrvl_wake_irq_btfunction btmrvl_sdio_probe_offunction btmrvl_sdio_get_rx_unitfunction btmrvl_sdio_read_fw_statusfunction btmrvl_sdio_read_rx_lenfunction btmrvl_sdio_enable_host_int_maskfunction btmrvl_sdio_disable_host_int_maskfunction btmrvl_sdio_poll_card_statusfunction btmrvl_sdio_verify_fw_downloadfunction btmrvl_sdio_download_helperfunction btmrvl_sdio_download_fw_w_helperfunction btmrvl_sdio_card_to_hostfunction btmrvl_sdio_process_int_statusfunction btmrvl_sdio_read_to_clearfunction btmrvl_sdio_write_to_clearfunction btmrvl_sdio_interruptfunction btmrvl_sdio_register_devfunction btmrvl_sdio_unregister_devfunction btmrvl_sdio_enable_host_intfunction btmrvl_sdio_disable_host_intfunction btmrvl_sdio_host_to_cardfunction btmrvl_sdio_download_fwfunction btmrvl_sdio_wakeup_fwfunction btmrvl_sdio_dump_regsfunction btmrvl_sdio_rdwr_firmwarefunction btmrvl_sdio_coredumpfunction btmrvl_sdio_probefunction btmrvl_sdio_removefunction btmrvl_sdio_suspendfunction device_may_wakeupfunction btmrvl_sdio_resumefunction device_may_wakeupfunction btmrvl_sdio_init_modulefunction btmrvl_sdio_exit_modulemodule init btmrvl_sdio_init_module
Annotated Snippet
module_init(btmrvl_sdio_init_module);
module_exit(btmrvl_sdio_exit_module);
MODULE_AUTHOR("Marvell International Ltd.");
MODULE_DESCRIPTION("Marvell BT-over-SDIO driver ver " VERSION);
MODULE_VERSION(VERSION);
MODULE_LICENSE("GPL v2");
MODULE_FIRMWARE("mrvl/sd8688_helper.bin");
MODULE_FIRMWARE("mrvl/sd8688.bin");
MODULE_FIRMWARE("mrvl/sd8787_uapsta.bin");
MODULE_FIRMWARE("mrvl/sd8797_uapsta.bin");
MODULE_FIRMWARE("mrvl/sd8887_uapsta.bin");
MODULE_FIRMWARE("mrvl/sd8897_uapsta.bin");
MODULE_FIRMWARE("mrvl/sdsd8977_combo_v2.bin");
MODULE_FIRMWARE("mrvl/sd8987_uapsta.bin");
MODULE_FIRMWARE("mrvl/sdsd8997_combo_v4.bin");
Annotation
- Immediate include surface: `linux/firmware.h`, `linux/slab.h`, `linux/suspend.h`, `linux/mmc/sdio_ids.h`, `linux/mmc/sdio_func.h`, `linux/module.h`, `linux/devcoredump.h`, `net/bluetooth/bluetooth.h`.
- Detected declarations: `function btmrvl_wake_irq_bt`, `function btmrvl_sdio_probe_of`, `function btmrvl_sdio_get_rx_unit`, `function btmrvl_sdio_read_fw_status`, `function btmrvl_sdio_read_rx_len`, `function btmrvl_sdio_enable_host_int_mask`, `function btmrvl_sdio_disable_host_int_mask`, `function btmrvl_sdio_poll_card_status`, `function btmrvl_sdio_verify_fw_download`, `function btmrvl_sdio_download_helper`.
- Atlas domain: Driver Families / drivers/bluetooth.
- 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.