/** * codes template for kernel pcie device driver */ #include <linux/module.h> #include <linux/init.h> #include <linux/pci.h>
#define PCIE_TEST_DEV_VENDOR_ID 0x8008 #define PCIE_TEST_DEV_DEVICE_ID 0x3308 #define PCIE_TEST_DEV_NAME "pcie_test_dev"
MODULE_LICENSE("GPL");
static int pcie_test_dev_probe(struct pci_dev *dev, const struct pci_device_id *id); static void pcie_test_dev_remove(struct pci_dev *dev);
static struct pci_device_id pcie_test_devids[] = { { PCI_DEVICE(PCIE_TEST_DEV_VENDOR_ID, PCIE_TEST_DEV_DEVICE_ID) }, { }, }; MODULE_DEVICE_TABLE(PCI, pcie_test_devids);
struct pci_driver pcie_test_dev_drv = { .name = PCIE_TEST_DEV_NAME, .id_table = pcie_test_devids, .probe = pcie_test_dev_probe, .remove = pcie_test_dev_remove, };
static int pcie_test_dev_probe(struct pci_dev *dev, const struct pci_device_id *id) { printk("PCIe test in [%s]\n", __func__); return 0; }
static void pcie_test_dev_remove(struct pci_dev *dev) { printk("PCIe test in [%s]\n", __func__); }
static int __init pcie_test_init(void) { printk("PCIe test init\n"); return pci_register_driver(&pcie_test_dev_drv); }
static void __exit pcie_test_exit(void) { printk("PCIe test exit\n"); pci_unregister_driver(&pcie_test_dev_drv); }
module_init(pcie_test_init); module_exit(pcie_test_exit);
MODULE_AUTHOR("Peng Yang<pyang@quantenna.com>"); |
PCI/PCIE Linux内核驱动模板
于 2022-12-08 01:02:27 首次发布