1
#define _PCILIB_VIEW_ENUM_C
20
static void pcilib_register_view_free(pcilib_t *ctx, pcilib_view_description_t *view) {
22
free((void*)view->name);
26
static int pcilib_register_view_read(pcilib_t *ctx, pcilib_view_context_t *view_ctx, pcilib_register_value_t dummy, pcilib_value_t *val) {
29
const pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
30
pcilib_register_view_description_t *v = (pcilib_register_view_description_t*)(model_info->views[view_ctx->view]);
33
return pcilib_read_register_view(ctx, v->bank, v->reg, v->view, val);
35
pcilib_register_value_t regval;
37
err = pcilib_read_register(ctx, v->bank, v->reg, ®val);
40
return pcilib_set_value_from_register_value(ctx, val, regval);
44
static int pcilib_register_view_write(pcilib_t *ctx, pcilib_view_context_t *view_ctx, pcilib_register_value_t *dummy, const pcilib_value_t *val) {
47
const pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
48
pcilib_register_view_description_t *v = (pcilib_register_view_description_t*)(model_info->views[view_ctx->view]);
51
return pcilib_write_register_view(ctx, v->bank, v->reg, v->view, val);
53
pcilib_register_value_t regval;
55
regval = pcilib_get_value_as_register_value(ctx, val, &err);
58
return pcilib_write_register(ctx, v->bank, v->reg, regval);
64
const pcilib_view_api_description_t pcilib_register_view_api =
65
{ PCILIB_VERSION, sizeof(pcilib_register_view_description_t), NULL, NULL, pcilib_register_view_free, pcilib_register_view_read, pcilib_register_view_write };