/alps/ipecamera

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

« back to all changes in this revision

Viewing changes to register.c

  • Committer: Suren A. Chilingaryan
  • Date: 2011-12-12 04:45:35 UTC
  • Revision ID: csa@dside.dyndns.org-20111212044535-6no1q7g230i8uvlv
multithread preprocessing of ipecamera frames and code reorganization

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
int pcilib_add_registers(pcilib_t *ctx, size_t n, pcilib_register_description_t *registers) {
21
21
    pcilib_register_description_t *regs;
22
 
    size_t size, n_present, n_new;
 
22
    size_t size, n_present = 0;
23
23
 
24
24
    if (!n) {
25
25
        for (n = 0; registers[n].bits; n++);
26
26
    }
27
27
 
28
28
 
29
 
    if (pcilib_model[ctx->model].registers) 
30
 
    
31
29
    if (ctx->model_info.registers == pcilib_model[ctx->model].registers) {
32
30
        for (n_present = 0; ctx->model_info.registers[n_present].bits; n_present++);
33
31
        for (size = 1024; size < 2 * (n + n_present + 1); size<<=1);
46
44
 
47
45
            regs = (pcilib_register_description_t*)realloc(ctx->model_info.registers, size * sizeof(pcilib_register_description_t));
48
46
            if (!regs) return PCILIB_ERROR_MEMORY;
49
 
            
50
 
            ctx->model_info.registers = regs;
 
47
 
 
48
            ctx->model_info.registers = regs;
51
49
            ctx->alloc_reg = size;
52
50
        }
53
51
        ctx->num_reg += n;
54
52
    }
55
 
    
 
53
 
56
54
    memcpy(ctx->model_info.registers + ctx->num_reg, ctx->model_info.registers + n_present, sizeof(pcilib_register_description_t));
57
55
    memcpy(ctx->model_info.registers + n_present, registers, n * sizeof(pcilib_register_description_t));
58
 
    
59
 
    return 0;    
 
56
 
 
57
    return 0;
60
58
}
61
59
 
62
60
pcilib_register_bank_t pcilib_find_bank_by_addr(pcilib_t *ctx, pcilib_register_bank_addr_t bank) {
66
64
 
67
65
    for (i = 0; banks[i].access; i++)
68
66
        if (banks[i].addr == bank) return i;
69
 
        
 
67
 
70
68
    return -1;
71
69
}
72
70
 
77
75
 
78
76
    for (i = 0; banks[i].access; i++)
79
77
        if (!strcasecmp(banks[i].name, bankname)) return i;
80
 
        
 
78
 
81
79
    return -1;
82
80
}
83
81
 
104
102
pcilib_register_t pcilib_find_register(pcilib_t *ctx, const char *bank, const char *reg) {
105
103
    pcilib_register_t i;
106
104
    pcilib_register_bank_t bank_id;
107
 
    pcilib_register_bank_addr_t bank_addr;
 
105
    pcilib_register_bank_addr_t bank_addr = 0;
108
106
 
109
107
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
110
108
    pcilib_register_description_t *registers =  model_info->registers;
136
134
 
137
135
static int pcilib_read_register_space_internal(pcilib_t *ctx, pcilib_register_bank_t bank, pcilib_register_addr_t addr, size_t n, pcilib_register_size_t offset, pcilib_register_size_t bits, pcilib_register_value_t *buf) {
138
136
    int err;
139
 
    int rest;
140
137
    size_t i;
141
138
    
142
139
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
231
228
 
232
229
 
233
230
int pcilib_read_register(pcilib_t *ctx, const char *bank, const char *regname, pcilib_register_value_t *value) {
234
 
    int err;
235
231
    int reg;
236
232
    
237
233
    reg = pcilib_find_register(ctx, bank, regname);
246
242
 
247
243
static int pcilib_write_register_space_internal(pcilib_t *ctx, pcilib_register_bank_t bank, pcilib_register_addr_t addr, size_t n, pcilib_register_size_t offset, pcilib_register_size_t bits, pcilib_register_value_t rwmask, pcilib_register_value_t *buf) {
248
244
    int err;
249
 
    int rest;
250
245
    size_t i;
251
246
    
252
247
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
356
351
}
357
352
 
358
353
int pcilib_write_register(pcilib_t *ctx, const char *bank, const char *regname, pcilib_register_value_t value) {
359
 
    int err;
360
354
    int reg;
361
355
    
362
356
    reg = pcilib_find_register(ctx, bank, regname);