diff options
author | Suren A. Chilingaryan <csa@suren.me> | 2015-04-20 22:01:04 +0200 |
---|---|---|
committer | Suren A. Chilingaryan <csa@suren.me> | 2015-04-20 22:01:04 +0200 |
commit | 77c4d6e67debf0e729734d882df033c4c0f5b0c3 (patch) | |
tree | 4a59e86332d6cc78fc5c97110ecba281b0f67bc9 /protocols/default.c | |
parent | 0002c0cc260a6a8e2b6c53f19ae99a625eca4355 (diff) | |
download | pcitool-77c4d6e67debf0e729734d882df033c4c0f5b0c3.tar.gz pcitool-77c4d6e67debf0e729734d882df033c4c0f5b0c3.tar.bz2 pcitool-77c4d6e67debf0e729734d882df033c4c0f5b0c3.tar.xz pcitool-77c4d6e67debf0e729734d882df033c4c0f5b0c3.zip |
Big redign of model structures
Diffstat (limited to 'protocols/default.c')
-rw-r--r-- | protocols/default.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/protocols/default.c b/protocols/default.c new file mode 100644 index 0000000..5e344cf --- /dev/null +++ b/protocols/default.c @@ -0,0 +1,40 @@ +#include <sys/time.h> +#include <arpa/inet.h> +#include <assert.h> + +#include "tools.h" +#include "model.h" +#include "error.h" + +#define default_datacpy(dst, src, access, bank) pcilib_datacpy(dst, src, access, 1, bank->raw_endianess) + +int pcilib_default_read(pcilib_t *ctx, pcilib_register_bank_context_t *bank_ctx, pcilib_register_addr_t addr, pcilib_register_value_t *value) { + char *ptr; + pcilib_register_value_t val = 0; + + const pcilib_register_bank_description_t *b = bank_ctx->bank; + + int access = b->access / 8; + + ptr = pcilib_resolve_register_address(ctx, b->bar, b->read_addr + addr); + default_datacpy(&val, ptr, access, b); + +// *value = val&BIT_MASK(bits); + *value = val; + + return 0; +} + + +int pcilib_default_write(pcilib_t *ctx, pcilib_register_bank_context_t *bank_ctx, pcilib_register_addr_t addr, pcilib_register_value_t value) { + char *ptr; + + const pcilib_register_bank_description_t *b = bank_ctx->bank; + + int access = b->access / 8; + + ptr = pcilib_resolve_register_address(ctx, b->bar, b->write_addr + addr); + default_datacpy(ptr, &value, access, b); + + return 0; +} |