/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 pci.c

  • Committer: Suren A. Chilingaryan
  • Date: 2011-07-09 03:33:18 UTC
  • Revision ID: csa@dside.dyndns.org-20110709033318-2k7vk5s5p5u7btem
Support dynamic registers, support register offsets and multiregisters (bitmasks), list NWL DMA registers

Show diffs side-by-side

added added

removed removed

Lines of Context:
63
63
 
64
64
        if (!model) model = pcilib_get_model(ctx);
65
65
        
66
 
        ctx->model_info = pcilib_model + model;
67
 
        
 
66
        memcpy(&ctx->model_info, pcilib_model + model, sizeof(pcilib_model_description_t));
 
67
 
68
68
        api = pcilib_model[model].event_api;
69
69
        if ((api)&&(api->init)) ctx->event_ctx = api->init(ctx);
70
70
    }
73
73
}
74
74
 
75
75
pcilib_model_description_t *pcilib_get_model_description(pcilib_t *ctx) {
76
 
    return ctx->model_info;
 
76
    return &ctx->model_info;
77
77
}
78
78
 
79
79
const pcilib_board_info_t *pcilib_get_board_info(pcilib_t *ctx) {
221
221
    pcilib_register_bank_t i;
222
222
    
223
223
    if (!ctx->reg_bar_mapped)  {
224
 
        pcilib_model_t model = pcilib_get_model(ctx);
225
 
        pcilib_register_bank_description_t *banks = pcilib_model[model].banks;
 
224
        pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
 
225
        pcilib_register_bank_description_t *banks = model_info->banks;
226
226
    
227
227
        for (i = 0; ((banks)&&(banks[i].access)); i++) {
228
228
//          uint32_t buf[2];
400
400
    pcilib_bar_t i;
401
401
    
402
402
    if (ctx) {
403
 
        pcilib_model_t model = pcilib_get_model(ctx);
404
 
        pcilib_event_api_description_t *eapi = pcilib_model[model].event_api;
405
 
        pcilib_dma_api_description_t *dapi = pcilib_model[model].dma_api;
 
403
        pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
 
404
        pcilib_event_api_description_t *eapi = model_info->event_api;
 
405
        pcilib_dma_api_description_t *dapi = model_info->dma_api;
406
406
    
407
407
        if ((eapi)&&(eapi->free)) eapi->free(ctx->event_ctx);
408
408
        if ((dapi)&&(dapi->free)) dapi->free(ctx->dma_ctx);
409
409
        
 
410
        if (ctx->model_info.registers != model_info->registers) {
 
411
            free(ctx->model_info.registers);
 
412
            ctx->model_info.registers = pcilib_model[ctx->model].registers;
 
413
        }
 
414
        
410
415
        while (ctx->kmem_list) {
411
416
            pcilib_free_kernel_memory(ctx, ctx->kmem_list);
412
417
        }