/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 protocols/software.c

  • 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:
105
105
        return (pcilib_register_bank_context_t*)bank_ctx;
106
106
}
107
107
 
 
108
uintptr_t pcilib_software_registers_resolve(pcilib_t *ctx, pcilib_register_bank_context_t *bank_ctx, pcilib_address_resolution_flags_t flags, pcilib_register_addr_t addr) {
 
109
    if (addr == PCILIB_REGISTER_ADDRESS_INVALID) addr = 0;
 
110
 
 
111
    switch (flags&PCILIB_ADDRESS_RESOLUTION_MASK_ADDRESS_TYPE) {
 
112
     case 0:
 
113
        return (uintptr_t)((pcilib_software_register_bank_context_t*)bank_ctx)->addr + addr;
 
114
 
 
115
     case PCILIB_ADDRESS_RESOLUTION_FLAG_PHYS_ADDRESS:
 
116
        return pcilib_kmem_get_block_pa(ctx, ((pcilib_software_register_bank_context_t*)bank_ctx)->kmem, 0) + addr;
 
117
    }
 
118
 
 
119
    return PCILIB_ADDRESS_INVALID;
 
120
}
 
121
 
 
122
 
108
123
int pcilib_software_registers_read(pcilib_t *ctx, pcilib_register_bank_context_t *bank_ctx, pcilib_register_addr_t addr, pcilib_register_value_t *value){
109
124
    const pcilib_register_bank_description_t *b = bank_ctx->bank;
110
125
    int access = b->access / 8;