/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 ipecamera/model.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:
21
21
//#define IPECAMERA_SIMPLIFIED_READOUT
22
22
#define IPECAMERA_MULTIREAD
23
23
 
24
 
static pcilib_register_value_t ipecamera_bit_mask[9] = { 0, 1, 3, 7, 15, 31, 63, 127, 255 };
 
24
//static pcilib_register_value_t ipecamera_bit_mask[9] = { 0, 1, 3, 7, 15, 31, 63, 127, 255 };
25
25
 
26
 
int ipecamera_read(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, uint8_t bits, pcilib_register_value_t *value) {
 
26
int ipecamera_read(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, pcilib_register_value_t *value) {
27
27
    uint32_t val, tmp[4];
28
28
    char *wr, *rd;
29
29
    struct timeval start, cur;
107
107
        return PCILIB_ERROR_VERIFY;
108
108
    }
109
109
 
110
 
    *value = val&ipecamera_bit_mask[bits];
 
110
//    *value = val&ipecamera_bit_mask[bits];
 
111
    *value = val&0xFF;
111
112
 
112
113
    return 0;
113
114
}
114
115
 
115
 
int ipecamera_write(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, uint8_t bits, pcilib_register_value_t value) {
 
116
int ipecamera_write(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, pcilib_register_value_t value) {
116
117
    uint32_t val, tmp[4];
117
118
    char *wr, *rd;
118
119
    struct timeval start, cur;
196
197
        return PCILIB_ERROR_VERIFY;
197
198
    }
198
199
    
199
 
    if ((val&ipecamera_bit_mask[bits]) != value) {
200
 
        pcilib_error("Value verification failed during register read (CMOSIS %lu, value: %lu != %lu)", addr, val&ipecamera_bit_mask[bits], value);
 
200
    if ((val&0xFF/*&ipecamera_bit_mask[bits]*/) != value) {
 
201
        pcilib_error("Value verification failed during register read (CMOSIS %lu, value: %lu != %lu)", addr, val/*&ipecamera_bit_mask[bits]*/, value);
201
202
        return PCILIB_ERROR_VERIFY;
202
203
    }
203
204