diff options
| author | zilio nicolas <nicolas.zilio@kit.edu> | 2015-07-07 14:03:39 +0200 | 
|---|---|---|
| committer | zilio nicolas <nicolas.zilio@kit.edu> | 2015-07-07 14:03:39 +0200 | 
| commit | 5a7bcf11b8e3168900a75e7cbf3b1e18f424d271 (patch) | |
| tree | 3a7ed810b913ed6a6adf50f78dce57f1c3e5dd7f | |
| parent | c4f209458c5caa00f8d67033224458c78c374adc (diff) | |
some modif
| -rw-r--r-- | pcilib/bar.c | 1 | ||||
| -rw-r--r-- | pcilib/pci.c | 7 | ||||
| -rw-r--r-- | pcilib/register.c | 12 | ||||
| -rw-r--r-- | pcilib/xml.c | 8 | ||||
| -rw-r--r-- | pcitool/cli.c | 4 | ||||
| -rw-r--r-- | protocols/default.c | 11 | 
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;  } | 
