summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzilio nicolas <nicolas.zilio@kit.edu>2015-07-07 14:03:39 +0200
committerzilio nicolas <nicolas.zilio@kit.edu>2015-07-07 14:03:39 +0200
commit5a7bcf11b8e3168900a75e7cbf3b1e18f424d271 (patch)
tree3a7ed810b913ed6a6adf50f78dce57f1c3e5dd7f
parentc4f209458c5caa00f8d67033224458c78c374adc (diff)
downloadpcitool-5a7bcf11b8e3168900a75e7cbf3b1e18f424d271.tar.gz
pcitool-5a7bcf11b8e3168900a75e7cbf3b1e18f424d271.tar.bz2
pcitool-5a7bcf11b8e3168900a75e7cbf3b1e18f424d271.tar.xz
pcitool-5a7bcf11b8e3168900a75e7cbf3b1e18f424d271.zip
some modif
-rw-r--r--pcilib/bar.c1
-rw-r--r--pcilib/pci.c7
-rw-r--r--pcilib/register.c12
-rw-r--r--pcilib/xml.c8
-rw-r--r--pcitool/cli.c4
-rw-r--r--protocols/default.c11
6 files changed, 34 insertions, 9 deletions
diff --git a/pcilib/bar.c b/pcilib/bar.c
index ce04f6d..2c7a8d4 100644
--- a/pcilib/bar.c
+++ b/pcilib/bar.c
@@ -120,6 +120,7 @@ void pcilib_unmap_bar(pcilib_t *ctx, pcilib_bar_t bar, void *data) {
}
int pcilib_map_register_space(pcilib_t *ctx) {
+ printf("mapping\n");
int err;
pcilib_register_bank_t i;
diff --git a/pcilib/pci.c b/pcilib/pci.c
index 5312922..76bd59f 100644
--- a/pcilib/pci.c
+++ b/pcilib/pci.c
@@ -294,6 +294,7 @@ int pcilib_map_data_space(pcilib_t *ctx, uintptr_t addr) {
char *pcilib_resolve_register_address(pcilib_t *ctx, pcilib_bar_t bar, uintptr_t addr) {
if (bar == PCILIB_BAR_DETECT) {
+ printf("bar = PCILIB_BAR_DETECT\n");
// First checking the default register bar
size_t offset = addr - ctx->board_info.bar_start[ctx->reg_bar];
if ((addr > ctx->board_info.bar_start[ctx->reg_bar])&&(offset < ctx->board_info.bar_length[ctx->reg_bar])) {
@@ -308,6 +309,7 @@ char *pcilib_resolve_register_address(pcilib_t *ctx, pcilib_bar_t bar, uintptr_t
// Otherwise trying to detect
bar = pcilib_detect_bar(ctx, addr, 1);
if (bar != PCILIB_BAR_INVALID) {
+ printf("bar pas ainvalid\n");
size_t offset = addr - ctx->board_info.bar_start[bar];
if ((offset < ctx->board_info.bar_length[bar])&&(ctx->bar_space[bar])) {
if (!ctx->bar_space[bar]) {
@@ -318,16 +320,21 @@ char *pcilib_resolve_register_address(pcilib_t *ctx, pcilib_bar_t bar, uintptr_t
}
}
} else {
+ printf("bar internal :%i\n",bar);
+ // printf("bar invalid\n");
if (!ctx->bar_space[bar]) {
pcilib_error("The requested bar (%i) is not mapped", bar);
return NULL;
}
if (addr < ctx->board_info.bar_length[bar]) {
+ printf("path1\n");
+ // printf("apres: %s\n",ctx->bar_space[bar] + addr);
return ctx->bar_space[bar] + addr + (ctx->board_info.bar_start[bar] & ctx->page_mask);
}
if ((addr >= ctx->board_info.bar_start[bar])&&(addr < (ctx->board_info.bar_start[bar] + ctx->board_info.bar_length[ctx->reg_bar]))) {
+ printf("path2\n");
return ctx->bar_space[bar] + (addr - ctx->board_info.bar_start[bar]) + (ctx->board_info.bar_start[bar] & ctx->page_mask);
}
}
diff --git a/pcilib/register.c b/pcilib/register.c
index 347bf7c..5909991 100644
--- a/pcilib/register.c
+++ b/pcilib/register.c
@@ -91,16 +91,22 @@ static int pcilib_read_register_space_internal(pcilib_t *ctx, pcilib_register_ba
for (i = 0; i < n; i++) {
err = bapi->read(ctx, bctx, addr + i * access, buf + i);
+ printf("buf +i: %i \n",buf[i]);
+ if(err) printf("err internal 1: %i\n",err);
if (err) break;
}
if ((bits > 0)&&(!err)) {
pcilib_register_value_t val = 0;
err = bapi->read(ctx, bctx, addr + n * access, &val);
-
+
val = (val >> offset)&BIT_MASK(bits);
+ printf("val : %i\n",val);
memcpy(buf + n, &val, sizeof(pcilib_register_value_t));
+ if(err) printf("err internal 2: %i\n",err);
}
+ printf("err internal 3: %i\n",err);
+ printf("buf internal: %i\n",buf[0]);
return err;
}
@@ -143,14 +149,18 @@ int pcilib_read_register_by_id(pcilib_t *ctx, pcilib_register_t reg, pcilib_regi
pcilib_error("Big-endian byte order support is not implemented");
return PCILIB_ERROR_NOTSUPPORTED;
} else {
+ printf("bits: %i, n %lu\n",bits, n);
res = 0;
if (bits) ++n;
for (i = 0; i < n; i++) {
+ printf("res: %i buf[i]: %i\n",res,buf[i]);
res |= buf[i] << (i * b->access);
+ printf("res: %i \n",res);
}
}
*value = res;
+ printf("value : %i\n",*value);
return err;
}
diff --git a/pcilib/xml.c b/pcilib/xml.c
index a9be502..205b563 100644
--- a/pcilib/xml.c
+++ b/pcilib/xml.c
@@ -306,8 +306,12 @@ void pcilib_xml_create_bank(pcilib_register_bank_description_t *mybank,xmlChar*
if(strcmp((char*)bar,"0")==0){
mybank->bar=PCILIB_BAR0;
- }else if(strcmp((char*)bar,"ipecamera_register")==0){
+ }else if(strcmp((char*)bar,"1")==0){
mybank->bar=PCILIB_BAR1;
+ }else if(strcmp((char*)bar,"no_bar")==0){
+ mybank->bar=PCILIB_BAR_NOBAR;
+ }else{
+ mybank->bar=PCILIB_BAR_INVALID;
}
mybank->bar=(pcilib_bar_t)strtol((char*)bar,&ptr,0);
@@ -336,7 +340,7 @@ void pcilib_xml_create_bank(pcilib_register_bank_description_t *mybank,xmlChar*
}else if(strcmp((char*)endianess,"host")==0){
mybank->endianess=PCILIB_HOST_ENDIAN;
}
-
+ mybank->format=(char*)format;
mybank->raw_endianess=mybank->endianess;
mybank->name=(char*)name;
diff --git a/pcitool/cli.c b/pcitool/cli.c
index 49d13ee..d24e357 100644
--- a/pcitool/cli.c
+++ b/pcitool/cli.c
@@ -989,8 +989,8 @@ int ReadRegister(pcilib_t *handle, const pcilib_model_description_t *model_info,
format = model_info->banks[bank_id].format;
if (!format) format = "%lu";
- err = pcilib_read_register_by_id(handle, regid, &value);
- // err = pcilib_read_register(handle, bank, reg, &value);
+ err = pcilib_read_register_by_id(handle, regid, &value);
+ // err = pcilib_read_register(handle, bank, reg, &value);
if (err) printf("Error reading register %s\n", reg);
else {
printf("%s = ", reg);
diff --git a/protocols/default.c b/protocols/default.c
index 5e344cf..dd1da54 100644
--- a/protocols/default.c
+++ b/protocols/default.c
@@ -13,15 +13,18 @@ int pcilib_default_read(pcilib_t *ctx, pcilib_register_bank_context_t *bank_ctx,
pcilib_register_value_t val = 0;
const pcilib_register_bank_description_t *b = bank_ctx->bank;
-
+ printf("bank name %s\n",b->name);
+ printf("bank bar %i\n",b->bar);
+ printf("addr %i\n",addr);
int access = b->access / 8;
-
+ printf("access : %i\n",access);
ptr = pcilib_resolve_register_address(ctx, b->bar, b->read_addr + addr);
+ // printf("ptr %s\n",ptr);
default_datacpy(&val, ptr, access, b);
-
+ printf("val : %i\n",val);
// *value = val&BIT_MASK(bits);
*value = val;
-
+ printf("value : %i\n",*value);
return 0;
}