/alps/ipecamera

To get this branch, use:
bzr branch http://darksoft.org/webbzr/alps/ipecamera

« back to all changes in this revision

Viewing changes to pci.h

  • Committer: Suren A. Chilingaryan
  • Date: 2015-04-27 00:28:57 UTC
  • Revision ID: csa@suren.me-20150427002857-82fk6r3e8rfgy4wr
First stand-alone ipecamera implementation

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef _PCITOOL_PCI_H
2
 
#define _PCITOOL_PCI_H
3
 
 
4
 
#define PCILIB_DEFAULT_CPU_COUNT 2
5
 
#define PCILIB_EVENT_TIMEOUT 1000000            /**< us */
6
 
#define PCILIB_TRIGGER_TIMEOUT 100000           /**< us */
7
 
#define PCILIB_DMA_TIMEOUT 10000                /**< us */
8
 
#define PCILIB_DMA_SKIP_TIMEOUT 1000000         /**< us */
9
 
#define PCILIB_REGISTER_TIMEOUT 10000           /**< us */
10
 
 
11
 
#include "driver/pciDriver.h"
12
 
#include "pcilib_types.h"
13
 
 
14
 
#include "pcilib.h"
15
 
#include "register.h"
16
 
#include "kmem.h"
17
 
#include "irq.h"
18
 
#include "dma.h"
19
 
#include "event.h"
20
 
 
21
 
struct pcilib_s {
22
 
    int handle;
23
 
    
24
 
    uintptr_t page_mask;
25
 
    pcilib_board_info_t board_info;
26
 
    pcilib_dma_info_t dma_info;
27
 
    pcilib_model_t model;
28
 
    
29
 
    char *bar_space[PCILIB_MAX_BANKS];
30
 
 
31
 
    int reg_bar_mapped;
32
 
    pcilib_bar_t reg_bar;
33
 
//    char *reg_space;
34
 
 
35
 
    int data_bar_mapped;
36
 
    pcilib_bar_t data_bar;
37
 
//    char *data_space;
38
 
//    size_t data_size;
39
 
    
40
 
    pcilib_kmem_list_t *kmem_list;
41
 
 
42
 
    size_t num_reg, alloc_reg;
43
 
    pcilib_model_description_t model_info;
44
 
    
45
 
    pcilib_dma_context_t *dma_ctx;
46
 
    pcilib_context_t *event_ctx;
47
 
    
48
 
#ifdef PCILIB_FILE_IO
49
 
    int file_io_handle;
50
 
#endif /* PCILIB_FILE_IO */
51
 
};
52
 
 
53
 
#ifdef _PCILIB_PCI_C
54
 
# include "ipecamera/model.h"
55
 
# include "kapture/model.h"
56
 
# include "dma/nwl.h"
57
 
# include "dma/ipe.h"
58
 
# include "default.h"
59
 
 
60
 
pcilib_model_description_t pcilib_model[4] = {
61
 
    { 4, PCILIB_HOST_ENDIAN,    NULL, NULL, NULL, NULL, NULL, NULL },
62
 
    { 4, PCILIB_HOST_ENDIAN,    NULL, NULL, NULL, NULL, NULL, NULL },
63
 
    { 4, PCILIB_LITTLE_ENDIAN,  ipecamera_registers, ipecamera_register_banks, ipecamera_register_ranges, ipecamera_events, ipecamera_data_types, &ipe_dma_api, &ipecamera_image_api },
64
 
    { 4, PCILIB_LITTLE_ENDIAN,  kapture_registers, kapture_register_banks, kapture_register_ranges, kapture_events, kapture_data_types, &ipe_dma_api, &kapture_api },
65
 
};
66
 
 
67
 
pcilib_protocol_description_t pcilib_protocol[3] = {
68
 
    { pcilib_default_read, pcilib_default_write },
69
 
    { ipecamera_read, ipecamera_write },
70
 
    { NULL, NULL }
71
 
};
72
 
#else
73
 
extern pcilib_model_description_t pcilib_model[];
74
 
extern pcilib_protocol_description_t pcilib_protocol[];
75
 
#endif /* _PCILIB_PCI_C */
76
 
 
77
 
const pcilib_board_info_t *pcilib_get_board_info(pcilib_t *ctx);
78
 
const pcilib_dma_info_t *pcilib_get_dma_info(pcilib_t *ctx);
79
 
 
80
 
int pcilib_map_register_space(pcilib_t *ctx);
81
 
int pcilib_map_data_space(pcilib_t *ctx, uintptr_t addr);
82
 
int pcilib_detect_address(pcilib_t *ctx, pcilib_bar_t *bar, uintptr_t *addr, size_t size);
83
 
 
84
 
 
85
 
#endif /* _PCITOOL_PCI_H */