X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=drm-lease-manager%2Flease-config.c;h=aaba6b616355cc1d143b463c29bb9dcd9f3b3415;hb=53f4fe700dee88cc9840a91f2f297aacf05e08d4;hp=b3f35a19ad49dc836fc5271fd1585a1a8ae64950;hpb=5c27165cdcfb28c8b2eccc139802fa0dd6403776;p=src%2Fdrm-lease-manager.git diff --git a/drm-lease-manager/lease-config.c b/drm-lease-manager/lease-config.c index b3f35a1..aaba6b6 100644 --- a/drm-lease-manager/lease-config.c +++ b/drm-lease-manager/lease-config.c @@ -23,6 +23,26 @@ #define CONFIG_ERROR(x, ...) ERROR_LOG("%s: " x, filename, ##__VA_ARGS__) +static bool populate_connector_planes(struct connector_config *config, + toml_array_t *planes) +{ + config->nplanes = toml_array_nelem(planes); + config->planes = calloc(config->nplanes, sizeof(uint32_t)); + if (!config->planes) { + DEBUG_LOG("Memory allocation failed: %s\n", strerror(errno)); + return false; + } + + for (int j = 0; j < config->nplanes; j++) { + toml_datum_t plane = toml_int_at(planes, j); + if (!plane.ok) { + return false; + } + config->planes[j] = plane.u.i; + } + return true; +} + static bool populate_connector_config(struct lease_config *config, toml_table_t *global_table, toml_array_t *conns) @@ -55,6 +75,14 @@ static bool populate_connector_config(struct lease_config *config, toml_bool_in(conn_config_data, "optional"); if (optional.ok) config->connectors[i].optional = optional.u.b; + + toml_array_t *planes = + toml_array_in(conn_config_data, "planes"); + if (planes && !populate_connector_planes(conn_config, planes)) { + ERROR_LOG("Invalid plane id for connector: %s\n", + conn_config->name); + return false; + } } return true; } @@ -128,8 +156,10 @@ void release_config(int num_leases, struct lease_config *config) for (int i = 0; i < num_leases; i++) { struct lease_config *c = &config[i]; free(c->lease_name); - for (int j = 0; j < c->nconnectors; j++) + for (int j = 0; j < c->nconnectors; j++) { free(c->connectors[j].name); + free(c->connectors[j].planes); + } free(c->connectors); } free(config);