1146
1146
pcilib_value_t val = {0};
1147
err = pcilib_read_register_view(handle, bank, model_info->registers[regid].name, unit, &val);
1148
if (err) printf("Error reading view %s of register %s\n", unit, reg);
1150
err = pcilib_convert_value_type(handle, &val, PCILIB_TYPE_STRING);
1151
if (err) printf("Error converting view %s of register %s to string\n", unit, reg);
1152
else printf("%s = %s\n", reg, val.sval);
1147
err = pcilib_read_register_view(handle, bank, reg, unit, &val);
1148
if (err) Error("Error reading view %s of register %s", unit, reg);
1150
err = pcilib_convert_value_type(handle, &val, PCILIB_TYPE_STRING);
1151
if (err) Error("Error converting view %s of register %s to string", unit, reg);
1153
printf("%s = %s\n", reg, val.sval);
1155
1155
bank_id = pcilib_find_register_bank_by_addr(handle, model_info->registers[regid].bank);
1156
1156
format = model_info->banks[bank_id].format;
1157
1157
if (!format) format = "%lu";
1158
1158
err = pcilib_read_register_by_id(handle, regid, &value);
1159
if (err) printf("Error reading register %s\n", reg);
1161
printf("%s = ", reg);
1162
printf(format, value);
1159
if (err) Error("Error reading register %s", reg);
1161
printf("%s = ", reg);
1162
printf(format, value);
1167
1166
if (model_info->registers) {
1366
1365
int WriteRegister(pcilib_t *handle, const pcilib_model_description_t *model_info, const char *bank, const char *reg, const char *unit, char **data) {
1370
pcilib_register_value_t value;
1372
const char *format = NULL;
1368
pcilib_value_t val = {0};
1369
pcilib_register_value_t value, verify;
1374
1371
pcilib_register_t regid = pcilib_find_register(handle, bank, reg);
1375
1372
if (regid == PCILIB_REGISTER_INVALID) Error("Can't find register (%s) from bank (%s)", reg, bank?bank:"autodetected");
1384
1381
if (!format) format = "%lu";
1387
if (isnumber(*data)) {
1388
if (sscanf(*data, "%li", &val) != 1) {
1389
Error("Can't parse data value (%s) is not valid decimal number", *data);
1393
} else if (isxnumber(*data)) {
1394
if (sscanf(*data, "%lx", &val) != 1) {
1395
Error("Can't parse data value (%s) is not valid decimal number", *data);
1400
Error("Can't parse data value (%s) is not valid decimal number", *data);
1405
err = pcilib_write_register(handle, bank, reg, value);
1406
if (err) Error("Error writting register %s\n", reg);
1408
if ((model_info->registers[regid].mode&PCILIB_REGISTER_RW) == PCILIB_REGISTER_RW) {
1409
err = pcilib_read_register(handle, bank, reg, &value);
1410
if (err) Error("Error reading back register %s for verification\n", reg);
1413
Error("Failed to write register %s: %lu is written and %lu is read back", reg, val, value);
1415
printf("%s = ", reg);
1416
printf(format, value);
1384
err = pcilib_set_value_from_static_string(handle, &val, *data);
1385
if (err) Error("Error (%i) setting value", err);
1388
err = pcilib_write_register_view(handle, bank, reg, unit, &val);
1389
if (err) Error("Error writting view %s of register %s", unit, reg);
1420
1390
printf("%s is written\n ", reg);
1392
value = pcilib_get_value_as_register_value(handle, &val, &err);
1393
if (err) Error("Error (%i) parsing data value (%s)", *data);
1395
err = pcilib_write_register(handle, bank, reg, value);
1396
if (err) Error("Error writting register %s\n", reg);
1398
if ((model_info->registers[regid].mode&PCILIB_REGISTER_RW) == PCILIB_REGISTER_RW) {
1399
const char *format = (val.format?val.format:"%u");
1401
err = pcilib_read_register(handle, bank, reg, &verify);
1402
if (err) Error("Error reading back register %s for verification\n", reg);
1404
if (verify != value) {
1405
Error("Failed to write register %s: %lu is written and %lu is read back", reg, value, verify);
1407
printf("%s = ", reg);
1408
printf(format, verify);
1412
printf("%s is written\n ", reg);