drivers/scsi/advansys.c

Source file repositories/reference/linux-study-clean/drivers/scsi/advansys.c

File Facts

System
Linux kernel
Corpus path
drivers/scsi/advansys.c
Extension
.c
Size
345380 bytes
Lines
11554
Domain
Driver Families
Bucket
drivers/scsi
Inferred role
Driver Families: operation-table or driver-model contract
Status
pattern 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

static struct pci_driver advansys_pci_driver = {
	.name =		DRV_NAME,
	.id_table =	advansys_pci_tbl,
	.probe =	advansys_pci_probe,
	.remove =	advansys_pci_remove,
};

static int __init advansys_init(void)
{
	int error;

	error = isa_register_driver(&advansys_vlb_driver,
				    ASC_IOADR_TABLE_MAX_IX);
	if (error)
		goto fail;

	error = eisa_driver_register(&advansys_eisa_driver);
	if (error)
		goto unregister_vlb;

	error = pci_register_driver(&advansys_pci_driver);
	if (error)
		goto unregister_eisa;

	return 0;

 unregister_eisa:
	eisa_driver_unregister(&advansys_eisa_driver);
 unregister_vlb:
	isa_unregister_driver(&advansys_vlb_driver);
 fail:
	return error;
}

static void __exit advansys_exit(void)
{
	pci_unregister_driver(&advansys_pci_driver);
	eisa_driver_unregister(&advansys_eisa_driver);
	isa_unregister_driver(&advansys_vlb_driver);
}

module_init(advansys_init);
module_exit(advansys_exit);

MODULE_DESCRIPTION("AdvanSys SCSI Adapter driver");
MODULE_LICENSE("GPL");
MODULE_FIRMWARE("advansys/mcode.bin");
MODULE_FIRMWARE("advansys/3550.bin");
MODULE_FIRMWARE("advansys/38C0800.bin");
MODULE_FIRMWARE("advansys/38C1600.bin");

Annotation

Implementation Notes