/alps/pcitool

To get this branch, use:
bzr branch http://suren.me/webbzr/alps/pcitool

« back to all changes in this revision

Viewing changes to dma/nwl.h

  • Committer: Suren A. Chilingaryan
  • Date: 2015-04-20 20:01:04 UTC
  • Revision ID: csa@suren.me-20150420200104-b5xny65io8lvoz3w
Big redign of model structures

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
#include <stdio.h>
5
5
#include "../pcilib.h"
6
6
 
7
 
#define PCILIB_NWL_MODIFICATION_IPECAMERA 0x100
8
 
 
9
 
pcilib_dma_context_t *dma_nwl_init(pcilib_t *ctx, pcilib_dma_modification_t type, void *arg);
 
7
pcilib_dma_context_t *dma_nwl_init(pcilib_t *ctx, const char *model, const void *arg);
10
8
void  dma_nwl_free(pcilib_dma_context_t *vctx);
11
9
 
12
10
int dma_nwl_get_status(pcilib_dma_context_t *vctx, pcilib_dma_engine_t dma, pcilib_dma_engine_status_t *status, size_t n_buffers, pcilib_dma_buffer_status_t *buffers);
22
20
int dma_nwl_stream_read(pcilib_dma_context_t *vctx, pcilib_dma_engine_t dma, uintptr_t addr, size_t size, pcilib_dma_flags_t flags, pcilib_timeout_t timeout, pcilib_dma_callback_t cb, void *cbattr);
23
21
double dma_nwl_benchmark(pcilib_dma_context_t *vctx, pcilib_dma_engine_addr_t dma, uintptr_t addr, size_t size, size_t iterations, pcilib_dma_direction_t direction);
24
22
 
25
 
 
26
 
#ifdef _PCILIB_DMA_NWL_C
27
 
pcilib_dma_api_description_t nwl_dma_api = {
28
 
    "nwl_dma",
 
23
#ifdef _PCILIB_CONFIG_C
 
24
static const pcilib_dma_api_description_t nwl_dma_api = {
29
25
    dma_nwl_init,
30
26
    dma_nwl_free,
31
27
    dma_nwl_get_status,
38
34
    dma_nwl_stream_read,
39
35
    dma_nwl_benchmark
40
36
};
41
 
#else
42
 
extern pcilib_dma_api_description_t nwl_dma_api;
43
 
#endif
44
 
 
 
37
 
 
38
static pcilib_register_bank_description_t nwl_dma_banks[] = {
 
39
    { PCILIB_REGISTER_BANK_DMA, PCILIB_BAR0, 0xA000, PCILIB_REGISTER_PROTOCOL_DEFAULT    , 0,                        0,                        PCILIB_LITTLE_ENDIAN, 32, PCILIB_LITTLE_ENDIAN, "0x%lx", "dma", "DMA Registers"},
 
40
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
 
41
};
 
42
 
 
43
static pcilib_register_description_t nwl_dma_registers[] = {
 
44
    {0x4000,    0,      32,     0,      0x00000011,     PCILIB_REGISTER_RW  , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_control_and_status",  ""},
 
45
    {0x4000,    0,      1,      0,      0x00000011,     PCILIB_REGISTER_RW  , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_interrupt_enable",  ""},
 
46
    {0x4000,    1,      1,      0,      0x00000011,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_interrupt_active",  ""},
 
47
    {0x4000,    2,      1,      0,      0x00000011,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_interrupt_pending",  ""},
 
48
    {0x4000,    3,      1,      0,      0x00000011,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_interrupt_mode",  ""},
 
49
    {0x4000,    4,      1,      0,      0x00000011,     PCILIB_REGISTER_RW  , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_user_interrupt_enable",  ""},
 
50
    {0x4000,    5,      1,      0,      0x00000011,     PCILIB_REGISTER_RW1C, PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_user_interrupt_active",  ""},
 
51
    {0x4000,    16,     8,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_s2c_interrupt_status",  ""},
 
52
    {0x4000,    24,     8,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_c2s_interrupt_status",  ""},
 
53
    {0x8000,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_design_version",  ""},
 
54
    {0x8000,    0,      4,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_subversion_number",  ""},
 
55
    {0x8000,    4,      8,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_version_number",  ""},
 
56
    {0x8000,    28,     4,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_targeted_device",  ""},
 
57
    {0x8200,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_transmit_utilization",  ""},
 
58
    {0x8200,    0,      2,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_transmit_sample_count",  ""},
 
59
    {0x8200,    2,      30,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_transmit_dword_count",  ""},
 
60
    {0x8204,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_receive_utilization",  ""},
 
61
    {0x8004,    0,      2,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_receive_sample_count",  ""},
 
62
    {0x8004,    2,      30,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_receive_dword_count",  ""},
 
63
    {0x8208,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_mwr",  ""},
 
64
    {0x8008,    0,      2,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_mwr_sample_count",  ""},
 
65
    {0x8008,    2,      30,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_mwr_dword_count",  ""},
 
66
    {0x820C,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_cpld",  ""},
 
67
    {0x820C,    0,      2,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_cpld_sample_count",  ""},
 
68
    {0x820C,    2,      30,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma_cpld_dword_count",  ""},
 
69
    {0x8210,    0,      12,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_init_fc_cpld",  ""},
 
70
    {0x8214,    0,      8,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_init_fc_cplh",  ""},
 
71
    {0x8218,    0,      12,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_init_fc_npd",  ""},
 
72
    {0x821C,    0,      8,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_init_fc_nph",  ""},
 
73
    {0x8220,    0,      12,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_init_fc_pd",  ""},
 
74
    {0x8224,    0,      8,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma_init_fc_ph",  ""},
 
75
    {0,         0,      0,      0,      0x00000000,     0,                                           0,                        0, NULL, NULL}
 
76
};
 
77
 
 
78
#endif /* _PCILIB_CONFIG_C */
 
79
 
 
80
#ifdef _PCILIB_DMA_NWL_C 
 
81
 // DMA Engine Registers
 
82
#define NWL_MAX_DMA_ENGINE_REGISTERS 64
 
83
#define NWL_MAX_REGISTER_NAME 128
 
84
static char nwl_dma_engine_register_names[PCILIB_MAX_DMA_ENGINES * NWL_MAX_DMA_ENGINE_REGISTERS][NWL_MAX_REGISTER_NAME];
 
85
static pcilib_register_description_t nwl_dma_engine_registers[] = {
 
86
    {0x0000,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_engine_capabilities",  ""},
 
87
    {0x0000,    0,      1,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_present",  ""},
 
88
    {0x0000,    1,      1,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_direction",  ""},
 
89
    {0x0000,    4,      2,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_type",  ""},
 
90
    {0x0000,    8,      8,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_number",  ""},
 
91
    {0x0000,    24,     6,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_max_buffer_size",  ""},
 
92
    {0x0004,    0,      32,     0,      0x0000C100,     PCILIB_REGISTER_RW  , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_engine_control",  ""},
 
93
    {0x0004,    0,      1,      0,      0x0000C100,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_interrupt_enable",  ""},
 
94
    {0x0004,    1,      1,      0,      0x0000C100,     PCILIB_REGISTER_RW1C, PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_interrupt_active",  ""},
 
95
    {0x0004,    2,      1,      0,      0x0000C100,     PCILIB_REGISTER_RW1C, PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_descriptor_complete",  ""},
 
96
    {0x0004,    3,      1,      0,      0x0000C100,     PCILIB_REGISTER_RW1C, PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_descriptor_alignment_error",  ""},
 
97
    {0x0004,    4,      1,      0,      0x0000C100,     PCILIB_REGISTER_RW1C, PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_descriptor_fetch_error",  ""},
 
98
    {0x0004,    5,      1,      0,      0x0000C100,     PCILIB_REGISTER_RW1C, PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_sw_abort_error",  ""},
 
99
    {0x0004,    8,      1,      0,      0x0000C100,     PCILIB_REGISTER_RW  , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_enable",  ""},
 
100
    {0x0004,    10,     1,      0,      0x0000C100,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_running",  ""},
 
101
    {0x0004,    11,     1,      0,      0x0000C100,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_waiting",  ""},
 
102
    {0x0004,    14,     1,      0,      0x0000C100,     PCILIB_REGISTER_RW  , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_reset_request", ""},
 
103
    {0x0004,    15,     1,      0,      0x0000C100,     PCILIB_REGISTER_W   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_reset", ""},
 
104
    {0x0008,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_RW  , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_next_descriptor",  ""},
 
105
    {0x000C,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_RW  , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_sw_descriptor",  ""},
 
106
    {0x0010,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_last_descriptor",  ""},
 
107
    {0x0014,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_active_time",  ""},
 
108
    {0x0018,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_wait_time",  ""},
 
109
    {0x001C,    0,      32,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_counter",  ""},
 
110
    {0x001C,    0,      2,      0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_sample_count",  ""},
 
111
    {0x001C,    2,      30,     0,      0x00000000,     PCILIB_REGISTER_R   , PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "dma%0*u%s_dword_count",  ""},
 
112
    {0,         0,      0,      0,      0x00000000,     0,                                          0,                        0, NULL, NULL}
 
113
};
 
114
 
 
115
 // XRAWDATA registers
 
116
static pcilib_register_description_t nwl_xrawdata_registers[] = {
 
117
    {0x9100,    0,      1,      0,      0x00000000,     PCILIB_REGISTER_RW, PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "xrawdata_enable_generator",  ""},
 
118
    {0x9104,    0,      16,     0,      0x00000000,     PCILIB_REGISTER_RW, PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "xrawdata_packet_length",  ""},
 
119
    {0x9108,    0,      2,      0,      0x00000003,     PCILIB_REGISTER_RW, PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "xrawdata_control",  ""},
 
120
    {0x9108,    0,      1,      0,      0x00000003,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "xrawdata_enable_checker",  ""},
 
121
    {0x9108,    1,      1,      0,      0x00000003,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BITS, PCILIB_REGISTER_BANK_DMA, "xrawdata_enable_loopback",  ""},
 
122
    {0x910C,    0,      1,      0,      0x00000000,     PCILIB_REGISTER_R , PCILIB_REGISTER_STANDARD, PCILIB_REGISTER_BANK_DMA, "xrawdata_data_mistmatch",  ""},
 
123
    {0,         0,      0,      0,      0x00000000,     0,                                            0,                        0, NULL, NULL}
 
124
};
 
125
#endif /* _PCILIB_DMA_NWL_C */
45
126
 
46
127
#endif /* _PCILIB_DMA_NWL_H */