#include <linux/pci.h>
这个头文件包含PCI寄存器的符号名称,以及若干厂商和设备ID值。
struct pci_dev;
代表内核中PCI设备的结构体。
struct pci_driver;
代表PCI驱动程序的结构体。所有的PCI驱动程序必须定义该结构体。
struct pci_device_id;
描述该驱动程序所支持的PCI设备类型的结构体。
int pci_register_driver(struct pci_driver *drv);
int pci_module_init(struct pci_driver *drv);
void pci_unregister_driver(struct pci_driver *drv);
从内核注册或者注销PCI驱动程序的函数。
struct pci_dev *pci_find_device(unsigned int vendor,unsigned int device,struct pci_dev *from);
struct pci_dev *pci_find_device_reverse(unsigned int vendor,unsigned int device,const struct pci_dev *from);
struct pci_dev *pci_find_subsys(unsigned int vendor,unsigned int device,unsigned int ss_vendor,unsigned int ss_device,const struct pci_dev *from);
struct pci_dev *pci_find_class(unsigend int class,struct pci_dev *from);
在设备列表中查找具有特定签名或者属于某一特定类的设备的函数。如果没有找到,返回值为NULL。from被用来继续查找;在第一次调用函数时它必须为NULL,如果想要查找更多的设备,它必须指向前一个找到的设备。这些函数不建议使用,应该用pci_get_系列的函数代替。
struct pci_dev *pci_get_device(unsigned int vender,unsigned int device,struct pci_dev *from);
struct pci_dev *pci_get_subsys(unsigned int vender,unsigned int device,unsigned int ss_vendor,unsigned int ss_device,struct pci_dev *from);
struct pci_dev *pci_get_slot(struct pci_bus *bus,unsigned int dev);
在设备列表中查找具有特定签名或者属于某一个特定类的设备的函数。如果没有找到,返回值为NULL。form被用来继续查找;在第一次调用函数时它必须为NULL,如果想要查找更多的设备,它必须指向前一个找到的设备。返回的结构体的引用计数被增加,在使用完该结构体之后,必须调用pci_dev_put函数。
int pci_read_config_byte(struct pci_dev *dev,int where,u8 *val);
int pci_read_config_word(struct pci_dev *dev,int where,u16 *val);
int pci_read_config_dword(struct pci_dev *dev,int where,u32 *val);
int pci_write_config_byte(struct pci_dev *dev,int where,u8 *val);
int pci_write_config_word(struct pci_dev *dev,int where,u16 *val);
int pci_write_config_dword(struct pci_dev *dev,int where,u32 *val);
读取或者写入PCI配置寄存器的函数。尽管Linux内核处理了字节序的问题,但从单字节装配多字节值时,程序员必须小心处理字节序的问题。PCI总线是小头的。
int pci_enable_device(struct pci_dev *dev);
激活一个PCI设备。
unsigned long pci_resource_start(struct pci_dev *dev,int bar);
unsigned long pci_resource_end(struct pci_dev *dev,int bar);
unsigned long pci_resource_flags(struct pci_dev *dev,int bar);
处理PCI设备资源的函数。
这个头文件包含PCI寄存器的符号名称,以及若干厂商和设备ID值。
struct pci_dev;
代表内核中PCI设备的结构体。
struct pci_driver;
代表PCI驱动程序的结构体。所有的PCI驱动程序必须定义该结构体。
struct pci_device_id;
描述该驱动程序所支持的PCI设备类型的结构体。
int pci_register_driver(struct pci_driver *drv);
int pci_module_init(struct pci_driver *drv);
void pci_unregister_driver(struct pci_driver *drv);
从内核注册或者注销PCI驱动程序的函数。
struct pci_dev *pci_find_device(unsigned int vendor,unsigned int device,struct pci_dev *from);
struct pci_dev *pci_find_device_reverse(unsigned int vendor,unsigned int device,const struct pci_dev *from);
struct pci_dev *pci_find_subsys(unsigned int vendor,unsigned int device,unsigned int ss_vendor,unsigned int ss_device,const struct pci_dev *from);
struct pci_dev *pci_find_class(unsigend int class,struct pci_dev *from);
在设备列表中查找具有特定签名或者属于某一特定类的设备的函数。如果没有找到,返回值为NULL。from被用来继续查找;在第一次调用函数时它必须为NULL,如果想要查找更多的设备,它必须指向前一个找到的设备。这些函数不建议使用,应该用pci_get_系列的函数代替。
struct pci_dev *pci_get_device(unsigned int vender,unsigned int device,struct pci_dev *from);
struct pci_dev *pci_get_subsys(unsigned int vender,unsigned int device,unsigned int ss_vendor,unsigned int ss_device,struct pci_dev *from);
struct pci_dev *pci_get_slot(struct pci_bus *bus,unsigned int dev);
在设备列表中查找具有特定签名或者属于某一个特定类的设备的函数。如果没有找到,返回值为NULL。form被用来继续查找;在第一次调用函数时它必须为NULL,如果想要查找更多的设备,它必须指向前一个找到的设备。返回的结构体的引用计数被增加,在使用完该结构体之后,必须调用pci_dev_put函数。
int pci_read_config_byte(struct pci_dev *dev,int where,u8 *val);
int pci_read_config_word(struct pci_dev *dev,int where,u16 *val);
int pci_read_config_dword(struct pci_dev *dev,int where,u32 *val);
int pci_write_config_byte(struct pci_dev *dev,int where,u8 *val);
int pci_write_config_word(struct pci_dev *dev,int where,u16 *val);
int pci_write_config_dword(struct pci_dev *dev,int where,u32 *val);
读取或者写入PCI配置寄存器的函数。尽管Linux内核处理了字节序的问题,但从单字节装配多字节值时,程序员必须小心处理字节序的问题。PCI总线是小头的。
int pci_enable_device(struct pci_dev *dev);
激活一个PCI设备。
unsigned long pci_resource_start(struct pci_dev *dev,int bar);
unsigned long pci_resource_end(struct pci_dev *dev,int bar);
unsigned long pci_resource_flags(struct pci_dev *dev,int bar);
处理PCI设备资源的函数。