/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 default.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:
8
8
 
9
9
#define default_datacpy(dst, src, access, bank)   pcilib_datacpy(dst, src, access, 1, bank->raw_endianess)
10
10
 
11
 
int pcilib_default_read(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, uint8_t bits, pcilib_register_value_t *value) {
 
11
int pcilib_default_read(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, pcilib_register_value_t *value) {
12
12
    int err;
13
13
    
14
14
    char *ptr;
15
15
    pcilib_register_value_t val = 0;
16
16
    int access = bank->access / 8;
17
17
 
18
 
    ptr =  pcilib_resolve_register_address(ctx, bank->bar, bank->read_addr + addr * access);
 
18
    ptr =  pcilib_resolve_register_address(ctx, bank->bar, bank->read_addr + addr);
19
19
    default_datacpy(&val, ptr, access, bank);
20
 
//    printf("%lx %lx\n",val, BIT_MASK(bits));
21
20
    
22
 
    *value = val&BIT_MASK(bits);
 
21
//    *value = val&BIT_MASK(bits);
 
22
    *value = val;
23
23
 
24
24
    return 0;
25
25
}
26
26
 
27
27
 
28
 
int pcilib_default_write(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, uint8_t bits, pcilib_register_value_t value) {
 
28
int pcilib_default_write(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, pcilib_register_value_t value) {
29
29
    int err;
30
30
    
31
31
    char *ptr;
32
32
    int access = bank->access / 8;
33
33
 
34
 
    ptr =  pcilib_resolve_register_address(ctx, bank->bar, bank->write_addr + addr * access);
 
34
    ptr =  pcilib_resolve_register_address(ctx, bank->bar, bank->write_addr + addr);
35
35
    default_datacpy(ptr, &value, access, bank);
36
36
 
37
37
    return 0;