本代码是小白写的如果各位大神有好代码 请在下方留个方式
#include <linux/module.h> #include <linux/tty.h> #include <linux/ioport.h> #include <linux/init.h> #include <linux/console.h> #include <linux/sysrq.h> #include <linux/delay.h> #include <linux/device.h> #include <linux/pci.h> #include <linux/sched.h> #include <linux/string.h> #include <linux/kernel.h> #include <linux/slab.h> #include <linux/tty_flip.h> #include <linux/serial_reg.h> #include <linux/serial.h> #include <linux/serial_core.h> #include <asm/io.h> #include <asm/irq.h> #include <asm/irq.h> #include <asm/bitops.h> #include <asm/byteorder.h> #include <asm/serial.h> #include <asm/io.h> #include <asm/uaccess.h> static int read_pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) { int rc; u16 id; unsigned char irq; int i; unsigned long io_base; unsigned long io_length; unsigned long flags; printk("probe succeed\n"); rc = pci_enable_device(dev); if (rc) return rc; rc=pci_read_config_word(dev,PCI_VENDOR_ID,&id); if(!rc) { printk("PCI_VENDOR_ID = %u\n",id); } rc=pci_read_config_word(dev,PCI_DEVICE_ID,&id); if(!rc) { printk("PCI_DEVICE_ID = %u\n",id); } if(pci_read_config_byte(dev,PCI_INTERRUPT_LINE,&irq)); { irq=-1; printk("ggggggggghhhhhhhhhhhhhhhh\n"); } printk("pci irq=%d\n %d\n",irq,dev->irq); for(i=0;i<=5;i++) { io_base = pci_resource_start(dev,i); printk("io_base = %lu\n",io_base); io_length= pci_resource_len(dev,i); printk("io_length = %lu\n",io_length); flags=pci_resource_flags(dev,i); printk("io_flages =%lu\n",flags); } return 0; } static void read_pci_remove(struct pci_dev *dev) { pci_disable_device(dev); } //如果套用,只需要改这里 static DEFINE_PCI_DEVICE_TABLE(your_equipment_tbl) = { {PCI_DEVICE(0x13a8, 0x358), }, {0,}, }; struct pci_driver read_pci_driver = { .name = "read_pci_config", .probe = read_pci_probe, .remove = read_pci_remove, .id_table = your_equipment_tbl, }; static int __init readpci_init(void) { int ret; ret = pci_register_driver(&read_pci_driver); if (ret < 0) { printk("pci_regeister_driver error\n"); return ret; } return ret; } static void __exit readpci_exit(void) { pci_unregister_driver(&read_pci_driver); } module_init(readpci_init); module_exit(readpci_exit); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Just read pci config");