PCIE读办卡信息代码

来源:互联网 发布:多益网络web前端笔试 编辑:程序博客网 时间:2024/05/21 01:51

本代码是小白写的如果各位大神有好代码 请在下方留个方式


#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");

原创粉丝点击