/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 pcilib/bar.c

  • Committer: Suren A. Chilingaryan
  • Date: 2015-11-20 17:26:29 UTC
  • Revision ID: csa@suren.me-20151120172629-ifd0wt33sg5bccpo
64-bit access to BAR memory

Show diffs side-by-side

added added

removed removed

Lines of Context:
119
119
        return NULL;
120
120
    }
121
121
 
 
122
    ctx->bar_space[bar] = res;
122
123
    return res;
123
124
}
124
125
 
323
324
    return NULL;
324
325
}
325
326
 
326
 
int pcilib_read(pcilib_t *ctx, pcilib_bar_t bar, uintptr_t addr, size_t size, void *buf) {
 
327
int pcilib_read(pcilib_t *ctx, pcilib_bar_t bar, uintptr_t addr, uint8_t access, size_t n, void *buf) {
327
328
    void *data;
328
329
 
329
 
    pcilib_detect_address(ctx, &bar, &addr, size);
 
330
    pcilib_detect_address(ctx, &bar, &addr, access * n);
330
331
    data = pcilib_map_bar(ctx, bar);
331
332
 
332
 
    pcilib_memcpy(buf, data + addr, size);
 
333
    pcilib_memcpy(buf, data + addr, access, n);
333
334
 
334
335
    pcilib_unmap_bar(ctx, bar, data);
335
336
 
336
337
    return 0;
337
338
}
338
339
 
339
 
int pcilib_write(pcilib_t *ctx, pcilib_bar_t bar, uintptr_t addr, size_t size, void *buf) {
 
340
int pcilib_write(pcilib_t *ctx, pcilib_bar_t bar, uintptr_t addr, uint8_t access, size_t n, void *buf) {
340
341
    void *data;
341
342
 
342
 
    pcilib_detect_address(ctx, &bar, &addr, size);
 
343
    pcilib_detect_address(ctx, &bar, &addr, access * n);
343
344
    data = pcilib_map_bar(ctx, bar);
344
345
 
345
 
    pcilib_memcpy(data + addr, buf, size);
 
346
    pcilib_memcpy(data + addr, buf, access, n);
346
347
 
347
348
    pcilib_unmap_bar(ctx, bar, data);
348
349