| Chris Wright | c70e0d9 | 2008-11-25 21:17:13 -0800 | [diff] [blame] | 1 | /* pci-stub - simple stub driver to reserve a pci device | 
|  | 2 | * | 
|  | 3 | * Copyright (C) 2008 Red Hat, Inc. | 
|  | 4 | * Author: | 
|  | 5 | * 	Chris Wright | 
|  | 6 | * | 
|  | 7 | * This work is licensed under the terms of the GNU GPL, version 2. | 
|  | 8 | * | 
|  | 9 | * Usage is simple, allocate a new id to the stub driver and bind the | 
|  | 10 | * device to it.  For example: | 
|  | 11 | * | 
|  | 12 | * # echo "8086 10f5" > /sys/bus/pci/drivers/pci-stub/new_id | 
|  | 13 | * # echo -n 0000:00:19.0 > /sys/bus/pci/drivers/e1000e/unbind | 
|  | 14 | * # echo -n 0000:00:19.0 > /sys/bus/pci/drivers/pci-stub/bind | 
|  | 15 | * # ls -l /sys/bus/pci/devices/0000:00:19.0/driver | 
|  | 16 | * .../0000:00:19.0/driver -> ../../../bus/pci/drivers/pci-stub | 
|  | 17 | */ | 
|  | 18 |  | 
|  | 19 | #include <linux/module.h> | 
|  | 20 | #include <linux/pci.h> | 
|  | 21 |  | 
|  | 22 | static int pci_stub_probe(struct pci_dev *dev, const struct pci_device_id *id) | 
|  | 23 | { | 
|  | 24 | return 0; | 
|  | 25 | } | 
|  | 26 |  | 
|  | 27 | static struct pci_driver stub_driver = { | 
|  | 28 | .name		= "pci-stub", | 
|  | 29 | .id_table	= NULL,	/* only dynamic id's */ | 
|  | 30 | .probe		= pci_stub_probe, | 
|  | 31 | }; | 
|  | 32 |  | 
|  | 33 | static int __init pci_stub_init(void) | 
|  | 34 | { | 
|  | 35 | return pci_register_driver(&stub_driver); | 
|  | 36 | } | 
|  | 37 |  | 
|  | 38 | static void __exit pci_stub_exit(void) | 
|  | 39 | { | 
|  | 40 | pci_unregister_driver(&stub_driver); | 
|  | 41 | } | 
|  | 42 |  | 
|  | 43 | module_init(pci_stub_init); | 
|  | 44 | module_exit(pci_stub_exit); | 
|  | 45 |  | 
|  | 46 | MODULE_LICENSE("GPL"); | 
|  | 47 | MODULE_AUTHOR("Chris Wright <chrisw@sous-sol.org>"); |