From nobody Fri Dec 19 09:11:03 2025 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1086E27424D for ; Tue, 18 Feb 2025 17:08:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739898514; cv=none; b=N7IQKbmQ1zyTNTFOeojUD1LBwN56q1moEjRTkjIzyH+dFEW68zrmRnjBKSvmG8eWW4sVQ7Q+ToN7RNLI03Zr0O4mQ3vcQNqsqbxw1zGQTFYWsopWwZr0zWAcXc+BHVgiD7R7H0gwScraKDWCi0KHuixaORz6M+yAAT8ZxJGhcTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739898514; c=relaxed/simple; bh=bvUa+h9JmV2ml66J/SlTMakEh4TAaYTL3p6zG9eX1wc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OzAQnE56HQbaDqM9UDlDg8o068OuOUEIdF7VqB3usUvwXabPOeTEt8ze1McVoh9uamfNsOpTJmup6gV3qukXFwYFSIsXmCMJVpiZihsOygdtzenOH9jWSIXxAGyqK7J8ykrkKSmE8P+EZW9ei2JMzPr2x+QVny8QwvJ6jexQXRs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fbvQc7o5; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fbvQc7o5" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4396f579634so20767205e9.1 for ; Tue, 18 Feb 2025 09:08:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739898509; x=1740503309; darn=vger.kernel.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=NfdjeoHNn9vAEGMDN9L94Mho5GfMjQgvCgSJKDEGohI=; b=fbvQc7o5Q8O1Y3+vbYay6L/jqVfYWX4GJdQX4Oge0nYARxVmDt2VBa3UnLolMLkxAD 13gbCgP6CKvXBULXoz+eRE9Uu7fd9r/jnCLWBbSGmABNN2UX11xCKirHfyQPzNvM3+Xu AaA1tN2oSbI9rZvUzjmGqLJh2PjCiusmOaAM2zOjuJPH2SLN/SW3UKFgQj+C1ZSrl285 JOUofnA5aMlUbvLLe6FeEDr8qrHYV+Pt53PLjp8wqs+ATUQ1da2oByVsYmEJ0sH1hfjQ 6j9mRI8TQZNaYuAgpVxGzsShhte/hLeS8tB+N1zYaPX3qRaZlXLfrlILtfqAFZr/Yel+ 3iRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739898509; x=1740503309; 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=NfdjeoHNn9vAEGMDN9L94Mho5GfMjQgvCgSJKDEGohI=; b=pcrQpyaRxy19jnmVKHdoLcMxdhGjXJnPiNGKJ983Y1VmvXQ6u7cFUx/0QoLvD3Y55F EVq/TQLX753MV3mG6WcoartQL5GO1dYlUs619K9PkIrCz7G0UOziSJd7kc88XnyuxB/b zqwrL7nnJojpdt5fwSHHqiY28vhxC35ZhqbynXxuqXEwF/f+CG0mzi+HoewEpaxhFrgq EX0eoqcuAhwpx199iZK181YrFILXi3XpCfb+cskHk+ZtbMevLLvGBNF2TAPaS01VHOF0 PlsefvqpjnSNYOCtGyBtDdMRqx4ueCtw1PlPWgDGbF0RyhME4m6+kueLqGX+IS8+9VYB 3xKQ== X-Forwarded-Encrypted: i=1; AJvYcCUef2F2fDgHMDBYWl1San2Z3ohq4Sw6b+GjdRlc/2cFo/PBb95r/HqZ4YAiw6eIFZBz9DtwdOWo1UH+fko=@vger.kernel.org X-Gm-Message-State: AOJu0YzmusInyIfUJ2GchfYSIL+v3Q5ExPkT59UyOZBYmuO7PUyt60lX 719nP04AwuVQu5Xqf1gkyxr8DjaeqQlbG+f9/Heq0iM+H5F7oEcs X-Gm-Gg: ASbGncukd6IqFfqBUK+czzJekAGTg/2WeC/xJtHZ2Ae31+4TcMzXP7vVTwtk05M42cM lrRdVhZUiLdRKo6/eiaa32r7gEC8p6XPtNrUwIXsbSbYnxzjTajJcRJinGngagXG0br8RaGWiGS tD6K4MreXl2NV1R2Zubhi/TBKucxfx+lJ+B+haY5JplI5zeqyjQKJSz5xHowXntGzgTuTJpqWYv vfZWfYbT9RA0K3w7Xzp0cvp4NreeGxWqVDbD5KE+xBOZMjV1BcommVkFPOva9SBDv+H5/hJT8s4 CvCVf0Q0Me+rKE0XHA== X-Google-Smtp-Source: AGHT+IE1eFPl5+Oyx/1vusPe9+rS4AS9gxivs8zXH8Jex7fZs4KuM1ByBapfkEHksqciSOncUv53jg== X-Received: by 2002:a05:600c:1c18:b0:434:fa55:eb56 with SMTP id 5b1f17b1804b1-43999d923a9mr5039395e9.7.1739898509206; Tue, 18 Feb 2025 09:08:29 -0800 (PST) Received: from fedora.. ([213.94.27.232]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-439941bd54bsm24680135e9.11.2025.02.18.09.08.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 09:08:28 -0800 (PST) From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= 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?q?Jos=C3=A9=20Exp=C3=B3sito?= Subject: [PATCH 13/16] drm/vkms: Allow to update the connector status Date: Tue, 18 Feb 2025 18:08:05 +0100 Message-ID: <20250218170808.9507-14-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250218170808.9507-1-jose.exposito89@gmail.com> References: <20250218170808.9507-1-jose.exposito89@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Implement the drm_connector_funcs.detect() callback to update the connector status by returning the status stored in the configuration. Signed-off-by: Jos=C3=A9 Exp=C3=B3sito --- drivers/gpu/drm/vkms/vkms_connector.c | 19 ++++++++++++++++++- drivers/gpu/drm/vkms/vkms_connector.h | 12 +++++++++++- drivers/gpu/drm/vkms/vkms_output.c | 2 +- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_connector.c b/drivers/gpu/drm/vkms/v= kms_connector.c index 48b10cba322a..b03a00b5803a 100644 --- a/drivers/gpu/drm/vkms/vkms_connector.c +++ b/drivers/gpu/drm/vkms/vkms_connector.c @@ -5,9 +5,23 @@ #include #include =20 +#include "vkms_config.h" #include "vkms_connector.h" =20 +static enum drm_connector_status vkms_connector_detect(struct drm_connecto= r *connector, + bool force) +{ + struct vkms_connector *vkms_connector; + enum drm_connector_status status; + + vkms_connector =3D drm_connector_to_vkms_connector(connector); + status =3D vkms_config_connector_get_status(vkms_connector->connector_cfg= ); + + return status; +} + static const struct drm_connector_funcs vkms_connector_funcs =3D { + .detect =3D vkms_connector_detect, .fill_modes =3D drm_helper_probe_single_connector_modes, .reset =3D drm_atomic_helper_connector_reset, .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, @@ -40,7 +54,8 @@ static const struct drm_connector_helper_funcs vkms_conn_= helper_funcs =3D { .best_encoder =3D vkms_conn_best_encoder, }; =20 -struct vkms_connector *vkms_connector_init(struct vkms_device *vkmsdev) +struct vkms_connector *vkms_connector_init(struct vkms_device *vkmsdev, + struct vkms_config_connector *connector_cfg) { struct drm_device *dev =3D &vkmsdev->drm; struct vkms_connector *connector; @@ -50,6 +65,8 @@ struct vkms_connector *vkms_connector_init(struct vkms_de= vice *vkmsdev) if (!connector) return ERR_PTR(-ENOMEM); =20 + connector->connector_cfg =3D connector_cfg; + ret =3D drmm_connector_init(dev, &connector->base, &vkms_connector_funcs, DRM_MODE_CONNECTOR_VIRTUAL, NULL); if (ret) diff --git a/drivers/gpu/drm/vkms/vkms_connector.h b/drivers/gpu/drm/vkms/v= kms_connector.h index c9149c1b7af0..5ab8a6d65182 100644 --- a/drivers/gpu/drm/vkms/vkms_connector.h +++ b/drivers/gpu/drm/vkms/vkms_connector.h @@ -5,22 +5,32 @@ =20 #include "vkms_drv.h" =20 +struct vkms_config_connector; + +#define drm_connector_to_vkms_connector(target) \ + container_of(target, struct vkms_connector, base) + /** * struct vkms_connector - VKMS custom type wrapping around the DRM connec= tor * * @drm: Base DRM connector + * @connector_cfg: Connector configuration */ struct vkms_connector { struct drm_connector base; + + struct vkms_config_connector *connector_cfg; }; =20 /** * vkms_connector_init() - Initialize a connector * @vkmsdev: VKMS device containing the connector + * @connector_cfg: Configuration for the connector * * Returns: * The connector or an error on failure. */ -struct vkms_connector *vkms_connector_init(struct vkms_device *vkmsdev); +struct vkms_connector *vkms_connector_init(struct vkms_device *vkmsdev, + struct vkms_config_connector *connector_cfg); =20 #endif /* _VKMS_CONNECTOR_H_ */ diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms= _output.c index 8d7ca0cdd79f..3af95983026e 100644 --- a/drivers/gpu/drm/vkms/vkms_output.c +++ b/drivers/gpu/drm/vkms/vkms_output.c @@ -87,7 +87,7 @@ int vkms_output_init(struct vkms_device *vkmsdev) struct vkms_config_encoder *possible_encoder; unsigned long idx =3D 0; =20 - connector_cfg->connector =3D vkms_connector_init(vkmsdev); + connector_cfg->connector =3D vkms_connector_init(vkmsdev, connector_cfg); if (IS_ERR(connector_cfg->connector)) { DRM_ERROR("Failed to init connector\n"); return PTR_ERR(connector_cfg->connector); --=20 2.48.1