Linux 구동 개발 잡기 (0x 02) - Pcidev 구조 체

7101 단어 Linux 드라이버
모든 종류의 PCI 장 치 는 구조 유형 Pci 를 사용 할 수 있 습 니 다.dev 로 설명 합 니 다.더 정확히 말 하면 모든 PCI 기능, 즉 PCI 논리 장치 가 유일 하 게 pci 가 있어 야 합 니 다.dev 장치 설명자.이 데이터 구조의 부분 정 의 는 다음 과 같 습 니 다 (include / linux / pci. h).
struct pci_dev {
/*         bus_list:   pci_dev               ,           
   PCI        。   PCI                 ,          
PCI      ,    PCI   pci_bus     devices     t*/
struct list_head bus_list;
/*     bus:    PCI     PCI   pci_bus  。  ,       ,bus     
       (primary bus),          PCI  */
struct pci_bus *bus;
/*   subordinate:    PCI          。               ,     
   PCI    ,        NULL*/
struct pci_bus *subordinate;
/*      sysdata:              */
void *sysdata;
/*   procent:   PCI   /proc           */
struct proc_dir_entry *procent;
/* devfn:  PCI        ,   PCI     (0-255)。  bit[7:3]      (  
  0-31),bit[2:0]    (    0-7)。 */
unsigned int devfn;
/* vendor:    16     ,  PCI     ID*/
unsigned short vendor;
/*device:    16     ,  PCI     ID */
unsigned short device;
/* subsystem_vendor:    16     ,  PCI        ID*/
unsigned short subsystem_vendor;
/* subsystem_device:    16     ,  PCI        ID。*/
unsigned short subsystem_device;
/* class:32       ,   PCI     ,  ,bit[7:0]     ,bit[15:8]   
   ,bit [23:16]      ,bit[31:24]   。  ,class    3       PCI 
        */
unsigned int class;
/* hdr_type:8     ,  PCI         。  ,bit[7]=1           ,
bit[7]=0           。Bit[6:0]   PCI           , 00h     
   PCI         , 01h      PCI-to-PCI        , 02h  CardBus 
       */
u8 hdr_type;
/* rom_base_reg:8      ,  PCI      ROM       PCI        。
ROM            PCI              ,  type 0       ,ROM 
           30h,   PCI-to-PCI    type 1      ,ROM         
   38h*/
u8 rom_base_reg;
/*   driver:    PCI             pci_driver  。   pci          
     pci_driver        。*/
struct pci_driver *driver;
/*dma_mask:  DMA       ,    ,       0xffffffff。    dma_addr_t   
include/asm/types.h , x86   ,dma_addr_t    u32  */
u64 dma_mask;
/*        */
pci_power_t  current_state;
/*        */
 struct device dev;
/*       irq:    PCI      IRQ       ,   0-15       */
unsigned int irq;
/*            ,  :I/O    、            ROM    。*/
struct resource resource[DEVICE_COUNT_RESOURCE];
/*         */
int cfg_size;
/*    PCI   */
unsigned int transparent:1;
/*      */
unsigned int multifunction:1;
/*       */
unsigned int is_busmaster:1;
/*      msi*/
unsigned int no_msi:1;
/*               */
unsigned int block_ucfg_access:1;
/*           */
u32 saved_config_space[16];
/* sysfs ROM       */
struct bin_attribute *rom_attr;
/*    rom   */
int rom_attr_enabled;
/*    sysfs  */
struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE];

};

좋은 웹페이지 즐겨찾기