libpci.h

Go to the documentation of this file.
00001 /*
00002 ** libpci.h for  in /home/anoman
00003 **
00004 ** Made by Arthur Kopatsy
00005 ** Login   <kopats_a@epita.fr>
00006 **
00007 ** Started on  Mon Apr 19 14:00:26 2004 Arthur Kopatsy
00008 ** Last update Wed Oct  6 16:16:49 2004 Vianney Rancurel
00009 */
00010 
00011 #ifndef LIBPCI_H_
00012 # define LIBPCI_H_
00013 
00014 #include <libc.h>
00015 #include <pcireg.h>
00016 
00017 typedef u_int16_t pci_tag_t;
00018 
00019 #define PCI_WAIT_TIMEOUT                        5
00020 
00021 #define MAX_BUS                                 256
00022 #define MAX_DEV_PER_BUS                         32
00023 #define MAX_FUN_PER_DEV                         8
00024 
00025 #define PCI_BUS(pci_tag)                        ((pci_tag >> 8) & (MAX_BUS - 1))
00026 #define PCI_DEV(pci_tag)                        ((pci_tag >> 3) & (MAX_DEV_PER_BUS - 1))
00027 #define PCI_FUN(pci_tag)                        (pci_tag & (MAX_FUN_PER_DEV - 1))
00028 
00029 typedef struct          s_pci_device
00030 {
00031   pci_tag_t             pci_tag;
00032   pci_reg_t             pci_id;
00033   pci_reg_t             pci_class;
00034 } pci_dev_t;
00035 
00036 /*
00037 ** Tools functions
00038 */
00039 
00040 const char      *pci_vendor_name(pci_vendor_t pci_vendor);
00041 const char      *pci_product_name(pci_vendor_t  pci_vendor,
00042                                   pci_product_t pci_product);
00043 
00044 typedef int (*t_pci_find_fun)(pci_dev_t *);
00045 int             pci_find_device(pci_dev_t       *device,
00046                                 t_pci_find_fun  find_fun);
00047 
00048 /*
00049 ** PCI syscalls list
00050 */
00051 
00052 #define SYSPCI_DEVICES          0
00053 #define SYSPCI_READ_REG         1
00054 #define SYSPCI_WRITE_REG        2
00055 
00056 int     pci_devices(paddr_t *list_addr, int *list_size);
00057 
00058 int     pci_read_reg(pci_tag_t pci_tag, int reg_addr, int bytes, pci_reg_t *value);
00059 
00060 int     pci_write_reg(pci_tag_t pci_tag, int reg_addr, int bytes, pci_reg_t value);
00061 
00062 int     pci_map_reg(pci_tag_t   pci_tag,
00063                     int         reg_addr);
00064 
00065 #endif /* PCI_H_ */

Generated on Wed May 24 23:04:18 2006 for LSE/OS by  doxygen 1.4.6