From patchwork Fri Mar 7 16:33:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?Sm9zw6kgRXhww7NzaXRv?= X-Patchwork-Id: 14006747 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A9611C19F32 for ; Fri, 7 Mar 2025 16:34:23 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EEE7710EBFB; Fri, 7 Mar 2025 16:34:22 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="jMN/XLc+"; dkim-atps=neutral Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id BF5A910EBF7 for ; Fri, 7 Mar 2025 16:34:19 +0000 (UTC) Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-3912e96c8e8so1145406f8f.2 for ; Fri, 07 Mar 2025 08:34:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741365258; x=1741970058; darn=lists.freedesktop.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sDAURXwAx1KsBXr4riUk4MzDkYMXGUuztgEFx9hlcRg=; b=jMN/XLc+9Ejclu/sm4dIGwLajAsxl+a4qGTTSfaWIUWPZdnxwCFhdkkfrhuG23v47v bZXJ8eBtciKyk/z6CfBmD3VG7/ClFa+ChPsN8UlYPlUmo6MGflfIH+fpXfWMBzuPOIIw H4L4JxI/p29LSuYtAqyXOABpGJtpJrcv+Ugy2zVjl+Z3Zm80vD+SDgtDXj3qavH2YUZm o4Ho/AlsAkYCZgTULuutEKuFAgXnGGR5tpwi7dsAz1JgAKSt3OMTj4OkkU8zKgu8QRYn vJajDSRSu6zNrCkqNapqbAzFGwiVvr7HH8kLrcFVgyspo8VIVy++o7h5Z1lKTY1c6SMv Q3ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741365258; x=1741970058; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sDAURXwAx1KsBXr4riUk4MzDkYMXGUuztgEFx9hlcRg=; b=AmdB8IdiAcmhllvYLTfMYMc1ZDemlSgZuVU+brMmKRwx1OGSoBczX1/1EOtJo4JtpV Kb8iy/HLIvY/oZMvfg3TkyoSj49hHJzLs37uo0vEBVuJDb1Ess5NKujEi4kAzxkuuBJS xGb5MGNLzZWbIgKHoQHxVRZX4MAOdUhTnabJ2Px8OAh13nIDD/WfSR9QcAzouIp9sMN9 CJ+GUKsZMkKwXRV6216WWqzBAyK+4JaKyyPMNtmJTkdy1toR+8JhYYkVopH9nzuzAgcH mhggeImcFQ+FX8mO2BdleZvT7OYtTpqgrPsEKLsIQeO8G7tuBoA+8ogFaBptLq0h4uQp Un7w== X-Forwarded-Encrypted: i=1; AJvYcCVSLQmUSC+vUE9zAGG494jiSVB4/EdVZZm28Df0GBhb2z4uSJRhLHNAALb7Rz06SnDJ+0GbxC8NNCg=@lists.freedesktop.org X-Gm-Message-State: AOJu0YwqMCVmyjMGK6xw35AYnpDHW4c/swlYYeuFU2U0M6Czl2fgL8xM G70x5IbXNHfS8MkUp14jv9SWVFIHesrcXXeBZU/cqhJJ2Qh8/895 X-Gm-Gg: ASbGncsNNy5YUEb0HQoGdjqGuHRbKKOcDEGlUG9MBSiliZEPVE/eSr3d24h/8yqrvs4 WfSOu8Ej3KsbJTORqEtFV7dYj/fzoDN32BRLQ4bIJ7LeCN1UXaWiJQlMnk3lZS37rKlvCRlCTFz k4OqQ9kAl2nedBiFqsSiCaL34Wd+4Zs1GSURfYp2rCV0DlIvuPj95h3u4AM7cD2JqUpMZrqSd2q TpOK4sa2nmIQvGyhcH1rSTeJI9KczE+XBltmogebhDd48TpX/iC0y47tkqoQAr5idVH2vyZkJWE vZgZIowynxwWCyo9cbElKbDF9yituVFhjSWWknREQfRDVf0= X-Google-Smtp-Source: AGHT+IEHAK/O4CJHl9ysak7QbxIiuSOZVGHkpbi9q4T78G4ZtKDKPIP1C1QDFQphOc/Ef8wVAs612Q== X-Received: by 2002:a05:6000:186d:b0:390:df75:ddc4 with SMTP id ffacd0b85a97d-39132db1113mr3150084f8f.44.1741365258109; Fri, 07 Mar 2025 08:34:18 -0800 (PST) Received: from fedora.. ([213.94.27.232]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3912c019557sm6031436f8f.50.2025.03.07.08.34.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Mar 2025 08:34:17 -0800 (PST) From: =?utf-8?b?Sm9zw6kgRXhww7NzaXRv?= To: louis.chauvet@bootlin.com Cc: hamohammed.sa@gmail.com, simona@ffwll.ch, melissa.srw@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, =?utf-8?b?Sm9zw6kgRXhww7NzaXRv?= Subject: [PATCH v3 14/16] drm/vkms: Allow to configure connector status Date: Fri, 7 Mar 2025 17:33:51 +0100 Message-ID: <20250307163353.5896-15-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250307163353.5896-1-jose.exposito89@gmail.com> References: <20250307163353.5896-1-jose.exposito89@gmail.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Allow to store the connector status in vkms_config_connector and add a getter and a setter functions as well a KUnit test. This change only adds the configuration, the connector status is not used yet. Signed-off-by: José Expósito --- drivers/gpu/drm/vkms/tests/vkms_config_test.c | 24 +++++++++++++++++ drivers/gpu/drm/vkms/vkms_config.c | 8 ++++-- drivers/gpu/drm/vkms/vkms_config.h | 26 +++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/vkms/tests/vkms_config_test.c b/drivers/gpu/drm/vkms/tests/vkms_config_test.c index ff4566cf9925..3574a829a6ed 100644 --- a/drivers/gpu/drm/vkms/tests/vkms_config_test.c +++ b/drivers/gpu/drm/vkms/tests/vkms_config_test.c @@ -916,6 +916,29 @@ static void vkms_config_test_connector_get_possible_encoders(struct kunit *test) vkms_config_destroy(config); } +static void vkms_config_test_connector_status(struct kunit *test) +{ + struct vkms_config *config; + struct vkms_config_connector *connector_cfg; + enum drm_connector_status status; + + config = vkms_config_create("test"); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config); + + connector_cfg = vkms_config_create_connector(config); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector_cfg); + + status = vkms_config_connector_get_status(connector_cfg); + KUNIT_EXPECT_EQ(test, status, connector_status_connected); + + vkms_config_connector_set_status(connector_cfg, + connector_status_disconnected); + status = vkms_config_connector_get_status(connector_cfg); + KUNIT_EXPECT_EQ(test, status, connector_status_disconnected); + + vkms_config_destroy(config); +} + static struct kunit_case vkms_config_test_cases[] = { KUNIT_CASE(vkms_config_test_empty_config), KUNIT_CASE_PARAM(vkms_config_test_default_config, @@ -937,6 +960,7 @@ static struct kunit_case vkms_config_test_cases[] = { KUNIT_CASE(vkms_config_test_plane_get_possible_crtcs), KUNIT_CASE(vkms_config_test_encoder_get_possible_crtcs), KUNIT_CASE(vkms_config_test_connector_get_possible_encoders), + KUNIT_CASE(vkms_config_test_connector_status), {} }; diff --git a/drivers/gpu/drm/vkms/vkms_config.c b/drivers/gpu/drm/vkms/vkms_config.c index a1df5659b0fb..f8394a063ecf 100644 --- a/drivers/gpu/drm/vkms/vkms_config.c +++ b/drivers/gpu/drm/vkms/vkms_config.c @@ -361,8 +361,11 @@ static int vkms_config_show(struct seq_file *m, void *data) vkms_config_for_each_encoder(vkmsdev->config, encoder_cfg) seq_puts(m, "encoder\n"); - vkms_config_for_each_connector(vkmsdev->config, connector_cfg) - seq_puts(m, "connector\n"); + vkms_config_for_each_connector(vkmsdev->config, connector_cfg) { + seq_puts(m, "connector:\n"); + seq_printf(m, "\tstatus=%d\n", + vkms_config_connector_get_status(connector_cfg)); + } return 0; } @@ -588,6 +591,7 @@ struct vkms_config_connector *vkms_config_create_connector(struct vkms_config *c return ERR_PTR(-ENOMEM); connector_cfg->config = config; + connector_cfg->status = connector_status_connected; xa_init_flags(&connector_cfg->possible_encoders, XA_FLAGS_ALLOC); list_add_tail(&connector_cfg->link, &config->connectors); diff --git a/drivers/gpu/drm/vkms/vkms_config.h b/drivers/gpu/drm/vkms/vkms_config.h index 0118e3f99706..e202b5a84ddd 100644 --- a/drivers/gpu/drm/vkms/vkms_config.h +++ b/drivers/gpu/drm/vkms/vkms_config.h @@ -7,6 +7,8 @@ #include #include +#include + #include "vkms_drv.h" /** @@ -99,6 +101,7 @@ struct vkms_config_encoder { * * @link: Link to the others connector in vkms_config * @config: The vkms_config this connector belongs to + * @status: Status (connected, disconnected...) of the connector * @possible_encoders: Array of encoders that can be used with this connector * @connector: Internal usage. This pointer should never be considered as valid. * It can be used to store a temporary reference to a VKMS connector @@ -109,6 +112,7 @@ struct vkms_config_connector { struct list_head link; struct vkms_config *config; + enum drm_connector_status status; struct xarray possible_encoders; /* Internal usage */ @@ -434,4 +438,26 @@ int __must_check vkms_config_connector_attach_encoder(struct vkms_config_connect void vkms_config_connector_detach_encoder(struct vkms_config_connector *connector_cfg, struct vkms_config_encoder *encoder_cfg); +/** + * vkms_config_connector_get_status() - Return the status of the connector + * @connector_cfg: Connector to get the status from + */ +static inline enum drm_connector_status +vkms_config_connector_get_status(struct vkms_config_connector *connector_cfg) +{ + return connector_cfg->status; +} + +/** + * vkms_config_crtc_set_writeback() - If a writeback connector will be created + * @crtc_cfg: Target CRTC + * @writeback: Enable or disable the writeback connector + */ +static inline void +vkms_config_connector_set_status(struct vkms_config_connector *connector_cfg, + enum drm_connector_status status) +{ + connector_cfg->status = status; +} + #endif /* _VKMS_CONFIG_H_ */