pci.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef _PCITOOL_PCI_H
  2. #define _PCITOOL_PCI_H
  3. #define PCILIB_DMA_TIMEOUT 10000 /**< us */
  4. #define PCILIB_REGISTER_TIMEOUT 10000 /**< us */
  5. #include "driver/pciDriver.h"
  6. #include "pcilib_types.h"
  7. #include "pcilib.h"
  8. #include "register.h"
  9. #include "kmem.h"
  10. #include "dma.h"
  11. #include "event.h"
  12. struct pcilib_s {
  13. int handle;
  14. uintptr_t page_mask;
  15. pcilib_board_info_t board_info;
  16. pcilib_dma_info_t dma_info;
  17. pcilib_model_t model;
  18. char *bar_space[PCILIB_MAX_BANKS];
  19. int reg_bar_mapped;
  20. pcilib_bar_t reg_bar;
  21. // char *reg_space;
  22. int data_bar_mapped;
  23. pcilib_bar_t data_bar;
  24. // char *data_space;
  25. // size_t data_size;
  26. pcilib_kmem_list_t *kmem_list;
  27. size_t num_reg, alloc_reg;
  28. pcilib_model_description_t model_info;
  29. pcilib_dma_context_t *dma_ctx;
  30. pcilib_context_t *event_ctx;
  31. #ifdef PCILIB_FILE_IO
  32. int file_io_handle;
  33. #endif /* PCILIB_FILE_IO */
  34. };
  35. #ifdef _PCILIB_PCI_C
  36. # include "ipecamera/model.h"
  37. # include "dma/nwl.h"
  38. # include "default.h"
  39. pcilib_model_description_t pcilib_model[3] = {
  40. { 4, PCILIB_HOST_ENDIAN, NULL, NULL, NULL, NULL, NULL },
  41. { 4, PCILIB_HOST_ENDIAN, NULL, NULL, NULL, NULL, NULL },
  42. { 4, PCILIB_LITTLE_ENDIAN, ipecamera_registers, ipecamera_register_banks, ipecamera_register_ranges, ipecamera_events, &nwl_dma_api, &ipecamera_image_api }
  43. };
  44. pcilib_protocol_description_t pcilib_protocol[3] = {
  45. { pcilib_default_read, pcilib_default_write },
  46. { ipecamera_read, ipecamera_write },
  47. { NULL, NULL }
  48. };
  49. #else
  50. extern pcilib_model_description_t pcilib_model[];
  51. extern void (*pcilib_error)(const char *msg, ...);
  52. extern void (*pcilib_warning)(const char *msg, ...);
  53. extern pcilib_protocol_description_t pcilib_protocol[];
  54. #endif /* _PCILIB_PCI_C */
  55. const pcilib_board_info_t *pcilib_get_board_info(pcilib_t *ctx);
  56. const pcilib_dma_info_t *pcilib_get_dma_info(pcilib_t *ctx);
  57. int pcilib_map_register_space(pcilib_t *ctx);
  58. int pcilib_map_data_space(pcilib_t *ctx, uintptr_t addr);
  59. #endif /* _PCITOOL_PCI_H */