aboutsummaryrefslogtreecommitdiffstats
path: root/drm-lease-manager/lease-manager.c
diff options
context:
space:
mode:
authorDamian Hobson-Garcia <dhobsong@igel.co.jp>2022-04-14 15:24:11 +0900
committerDamian Hobson-Garcia <dhobsong@igel.co.jp>2022-04-20 10:58:39 +0900
commit5c27165cdcfb28c8b2eccc139802fa0dd6403776 (patch)
tree29fcfe154457dfcbdcfd0ed0634ce1b7662c3010 /drm-lease-manager/lease-manager.c
parent84bd108e702b753bc1f7b232c94baa5b84295b5f (diff)
Add 'optional' property to connector configuration
All connectors will default to mandatory. i.e. if any specified connector is in the lease configuration is not available, that lease will not be created. Setting a connector as 'optional' lets the lease creation succeed even if the connector is not physically present on the system. Failing to create a lease does not affect the creation of other leases. The drm-lease-manager daemon will run as long as one lease is successfully created. Bug-AGL: SPEC-3815 Change-Id: I5edf8a97a2a3589e8eb5368c0a5b13adb4cb5c9b Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
Diffstat (limited to 'drm-lease-manager/lease-manager.c')
-rw-r--r--drm-lease-manager/lease-manager.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/drm-lease-manager/lease-manager.c b/drm-lease-manager/lease-manager.c
index 177a241..3834631 100644
--- a/drm-lease-manager/lease-manager.c
+++ b/drm-lease-manager/lease-manager.c
@@ -356,11 +356,27 @@ static struct lease *lease_create(struct lm *lm,
for (int i = 0; i < nconnectors; i++) {
uint32_t cid;
+ struct connector_config *con_config = NULL;
- if (config->nconnectors > 0) {
- char *connector_name = config->connectors[i].name;
+ if (config->nconnectors > 0)
+ con_config = &config->connectors[i];
- if (!drm_find_connector(lm, connector_name, &cid)) {
+ if (con_config) {
+ char *connector_name = con_config->name;
+ bool optional = con_config->optional;
+
+ bool found =
+ drm_find_connector(lm, connector_name, &cid);
+
+ bool missing_mandatory = !found && !optional;
+ bool missing_optional = !found && optional;
+
+ if (missing_mandatory) {
+ ERROR_LOG("Lease: %s, "
+ "mandatory connector %s not found\n",
+ config->lease_name, connector_name);
+ goto err;
+ } else if (missing_optional) {
WARN_LOG("Lease: %s, "
"unknown DRM connector: %s\n",
config->lease_name, connector_name);