/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 pcilib/bank.h

  • Committer: Suren A. Chilingaryan
  • Date: 2015-11-18 02:25:02 UTC
  • Revision ID: csa@suren.me-20151118022502-2yu6oagexn3048jq
Provide API calls for register and bank address resolution

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#define PCILIB_REGISTER_BANK_PROPERTY           65                                      /**< Registers abstracting properties and other computed registers */
13
13
#define PCILIB_REGISTER_BANK_DMACONF            96                                      /**< DMA configuration in the software registers */
14
14
#define PCILIB_REGISTER_BANK_DMA                97                                      /**< First BANK address to be used by DMA engines */
 
15
#define PCILIB_REGISTER_BANK_DMA0               PCILIB_REGISTER_BANK_DMA                /**< First BANK address to be used by DMA engines */
 
16
#define PCILIB_REGISTER_BANK_DMA1               (PCILIB_REGISTER_BANK_DMA + 1)          /**< Second BANK address to be used by DMA engines */
 
17
#define PCILIB_REGISTER_BANK_DMA2               (PCILIB_REGISTER_BANK_DMA + 2)          /**< Third BANK address to be used by DMA engines */
 
18
#define PCILIB_REGISTER_BANK_DMA3               (PCILIB_REGISTER_BANK_DMA + 3)          /**< Fourth BANK address to be used by DMA engines */
15
19
#define PCILIB_REGISTER_BANK_DYNAMIC            128                                     /**< First BANK address to map dynamic XML configuration */
16
20
#define PCILIB_REGISTER_PROTOCOL_INVALID        ((pcilib_register_protocol_t)-1)
17
21
#define PCILIB_REGISTER_PROTOCOL0               0                                       /**< First PROTOCOL address to be used in the event engine */
34
38
    PCILIB_MODEL_MODIFICATION_FLAG_SKIP_EXISTING = 2                            /**< If flag is set, pcilib will just skip existing registers/banks/etc instead of reporting a error */
35
39
} pcilib_model_modification_flags_t;
36
40
 
 
41
typedef enum {
 
42
    PCILIB_ADDRESS_RESOLUTION_FLAGS_DEFAULT = 0,
 
43
    PCILIB_ADDRESS_RESOLUTION_FLAG_BUS_ADDRESS = 1,                             /**< Resolve bus address instead of VA */
 
44
    PCILIB_ADDRESS_RESOLUTION_FLAG_PHYS_ADDRESS = 2,                            /**< Resolve hardware address instead of VA */
 
45
    PCILIB_ADDRESS_RESOLUTION_MASK_ADDRESS_TYPE = 3,
 
46
    PCILIB_ADDRESS_RESOLUTION_FLAG_READ_ONLY = 4,                               /**< Request read-only memory, in case if read-write resolution is impossible */
 
47
    PCILIB_ADDRESS_RESOLUTION_FLAG_WRITE_ONLY = 8,                              /**< Request write-only resolution, in case if read-write resolution is impossible */
 
48
    PCILIB_ADDRESS_RESOLUTION_MASK_ACCESS_MODE = 12
 
49
} pcilib_address_resolution_flags_t;
 
50
 
37
51
typedef struct {
38
52
    pcilib_version_t version;
39
53
 
40
54
    pcilib_register_bank_context_t *(*init)(pcilib_t *ctx, pcilib_register_bank_t bank, const char *model, const void *args);                   /**< Optional API call to initialize bank context */
41
55
    void (*free)(pcilib_t *pcilib, pcilib_register_bank_context_t *ctx);                                                                        /**< Optional API call to cleanup bank context */
 
56
    uintptr_t (*resolve)(pcilib_t *pcilib, pcilib_register_bank_context_t *ctx, pcilib_address_resolution_flags_t flags, pcilib_register_addr_t addr); /**< Resolves register virtual address (if supported) */
42
57
    int (*read)(pcilib_t *pcilib, pcilib_register_bank_context_t *ctx, pcilib_register_addr_t addr, pcilib_register_value_t *value);            /**< Read from register, mandatory for RO/RW registers */
43
58
    int (*write)(pcilib_t *pcilib, pcilib_register_bank_context_t *ctx, pcilib_register_addr_t addr, pcilib_register_value_t value);            /**< Write to register, mandatory for WO/RW registers */
44
59
} pcilib_register_protocol_api_description_t;
164
179
pcilib_register_protocol_t pcilib_find_register_protocol_by_name(pcilib_t *ctx, const char *name);
165
180
pcilib_register_protocol_t pcilib_find_register_protocol(pcilib_t *ctx, const char *name);
166
181
 
 
182
uintptr_t pcilib_resolve_bank_address_by_id(pcilib_t *ctx, pcilib_address_resolution_flags_t flags, pcilib_register_bank_t bank);
 
183
uintptr_t pcilib_resolve_bank_address(pcilib_t *ctx, pcilib_address_resolution_flags_t flags, const char *bank);
 
184
 
 
185
uintptr_t pcilib_resolve_register_address_by_id(pcilib_t *ctx, pcilib_address_resolution_flags_t flags, pcilib_register_t reg);
 
186
uintptr_t pcilib_resolve_register_address(pcilib_t *ctx, pcilib_address_resolution_flags_t flags, const char *bank, const char *regname);
 
187
 
167
188
int pcilib_get_register_bank_attr_by_id(pcilib_t *ctx, pcilib_register_bank_t bank, const char *attr, pcilib_value_t *val);
168
189
int pcilib_get_register_bank_attr(pcilib_t *ctx, const char *bankname, const char *attr, pcilib_value_t *val);
169
190