Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp6030773rdb; Thu, 14 Dec 2023 06:41:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IEh00TA6+4Je6BLkiApsKIL3Ja7mzZv4Jp1hnCr3nkp6nwzosHC2uDtZ0zo79wnwevUdwrt X-Received: by 2002:a05:6a21:328b:b0:135:1af6:9a01 with SMTP id yt11-20020a056a21328b00b001351af69a01mr5099683pzb.8.1702564884884; Thu, 14 Dec 2023 06:41:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702564884; cv=none; d=google.com; s=arc-20160816; b=cLRdmlPJVOEU6i7+3RArD3C4xYh7kqhFRHx+/3o0yPEwh4+hoCTfpJcx1F33FgpQuG 6+p3/GTLj/D8HCZjccTwm1wXQ0uOOgC57GU2p/fY7qHi9b0D0mrE3zYvVw+SBw4XBE8j fmNSSlV20QYrI2rq1xtFwFbLrElFRzYAle5OIMKNhdaLv7Wi4c6WGXzOiKXNNBauKc2P +rtSjnwPg9rZff7krqAmudGWAKr4L2FfgIjYAKnMv92dtBAC/oiUjQRzkeX+N7YXPK3D UbpxQiHjIuvj8hM5sWTs8dzQWkDL1iQ4iCfh0GVhCBto10/UrRVbfn0d2dpdA5QHxbl3 vlQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=JznIu9lNlIeiTo8wKTcxQuhhJ2zgIwL8Q7gBCogBxvY=; fh=zQ9/wNmcVHWu4SuPOylBxCR7EoDQI9lVwbYU0s8q4Hc=; b=fItY6sNFRQt496myNktgJqi0CWrJdcZBa/jG2/9GTOl/ZfgNVbAACZ8Blen01+Di3X kN4pJI7b5Ftzw7Jw5gS/wHvdGI3pnDp/b2q5N3yZRzGQ+dCTGNT81QVLa0/zEUOONT7g Za8kCXyTnjLNm6Rj2R8xjA6bEtEk8sGH+vakd722xsofPV4ABt0SyQr5XfA54SpHZrT5 BvEvUex+ndS30VQIuouAbOep+N5S2uesUD8XucNSAWySrmpnTP1r7NWkjed+b/Bt5pUB ySjwB5mJ1wQdHEB6+tYkCmZFgfMA6O+0m6RwRSV415tzVxfz2C+ryqhn6Wrs/F9zQqHz Pf9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@raspberrypi.com header.s=google header.b=mah02CWF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=raspberrypi.com Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id e12-20020a65688c000000b005c5e2488c32si11461581pgt.405.2023.12.14.06.41.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Dec 2023 06:41:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@raspberrypi.com header.s=google header.b=mah02CWF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=raspberrypi.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 37383817295C; Thu, 14 Dec 2023 06:41:21 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230281AbjLNOlG (ORCPT + 99 others); Thu, 14 Dec 2023 09:41:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230260AbjLNOlE (ORCPT ); Thu, 14 Dec 2023 09:41:04 -0500 Received: from mail-oi1-x22a.google.com (mail-oi1-x22a.google.com [IPv6:2607:f8b0:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB83D116 for ; Thu, 14 Dec 2023 06:41:08 -0800 (PST) Received: by mail-oi1-x22a.google.com with SMTP id 5614622812f47-3ba1be5ad0aso2368320b6e.0 for ; Thu, 14 Dec 2023 06:41:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1702564868; x=1703169668; darn=vger.kernel.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=JznIu9lNlIeiTo8wKTcxQuhhJ2zgIwL8Q7gBCogBxvY=; b=mah02CWFDHeTmiEaZX6G5xe/jDGu/dsI/U6/A/xk/U36+pHEnHJrq/yhw989lBYSPl RkE+ESJTpVpO2bz/X5Bjal+8ng2BhIO66S7B0msbnamgmJtPZDE4Tkvx7+E/AnrvnCGD Z2l+DX+xC3zOYP1VMoDjWUVPlmNuVrqlzT1bCvOj6YiS87OV3WpZIHJ+s1hCNEMLjT9j bBYRzKDsnZBjPUaegfekdAi3A9kqXzDon7+67x0rLmMWMxt5G/HCD/If6rQFz/+ZsSkh RhcW2ZeNDIRofdXiyJ1PTW9O0AIcE2DIgJ62X1FnMwwIscXJfMfALRyqwumtWFtEkbCG ZhkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702564868; x=1703169668; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JznIu9lNlIeiTo8wKTcxQuhhJ2zgIwL8Q7gBCogBxvY=; b=MnwJaIg3mnIko9r5cetaUs+JYxdWAvIGh0CsHwNUM8fCQP2RPZSWmrS3M7bNU7CnH0 AMAS2OPSmHKY9yeKUuuEe+dt2/wfqgBYvKOSSZ4h8yZbfHAo8cu8Wv9L46yfMPqf1f27 pCA+n85dFdbkQ3HI7GBSR9Rox3ocfuJiBCvMukMexcA45VZjARD7XCEE+f3eDq/hr5EF HQGx1s4lI8W3PLo+NnIouby8RuGEKeeog5+ypV5LiUPhF9VLNv8iU2ytBQMTUq4udUJG GewBg2/ArMBbDEKC9s0p7iW9uqT52p0xq2jMS39zdsW1NvWWE0jQUlF5sv+oyHh4MPYP x80Q== X-Gm-Message-State: AOJu0YxUZmmRymMOEhav4aXJ//jBk5nY5Enf8GjTpgnCusv9Lw3PFrLu aP+lN8UpJR5wfIOGz+2pVUADAcFh5vhWreVQMyWhsw== X-Received: by 2002:a05:6808:140c:b0:3b9:ff46:fa9b with SMTP id w12-20020a056808140c00b003b9ff46fa9bmr12542705oiv.43.1702564868089; Thu, 14 Dec 2023 06:41:08 -0800 (PST) MIME-Version: 1.0 References: <20231207-kms-hdmi-connector-state-v5-0-6538e19d634d@kernel.org> <20231207-kms-hdmi-connector-state-v5-7-6538e19d634d@kernel.org> In-Reply-To: <20231207-kms-hdmi-connector-state-v5-7-6538e19d634d@kernel.org> From: Dave Stevenson Date: Thu, 14 Dec 2023 14:40:52 +0000 Message-ID: Subject: Re: [PATCH v5 07/44] drm/connector: hdmi: Create an HDMI sub-state To: Maxime Ripard Cc: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Emma Anholt , Jonathan Corbet , Sandy Huang , =?UTF-8?Q?Heiko_St=C3=BCbner?= , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Hans Verkuil , linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Thu, 14 Dec 2023 06:41:21 -0800 (PST) On Thu, 7 Dec 2023 at 15:50, Maxime Ripard wrote: > > The next features we will need to share across drivers will need to > store some parameters for drivers to use, such as the selected output > format. > > Let's create a new connector sub-state dedicated to HDMI controllers, > that will eventually store everything we need. > > Signed-off-by: Maxime Ripard Reviewed-by: Dave Stevenson > --- > drivers/gpu/drm/drm_atomic_state_helper.c | 35 +++++++++++++++++++++++++++++++ > include/drm/drm_atomic_state_helper.h | 4 ++++ > include/drm/drm_connector.h | 7 +++++++ > 3 files changed, 46 insertions(+) > > diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c > index 54975de44a0e..e69c0cc1c6da 100644 > --- a/drivers/gpu/drm/drm_atomic_state_helper.c > +++ b/drivers/gpu/drm/drm_atomic_state_helper.c > @@ -570,6 +570,22 @@ void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector) > } > EXPORT_SYMBOL(drm_atomic_helper_connector_tv_reset); > > +/** > + * __drm_atomic_helper_connector_hdmi_reset() - Initializes all HDMI @drm_connector_state resources > + * @connector: DRM connector > + * @new_state: connector state to reset > + * > + * Initializes all HDMI resources from a @drm_connector_state without > + * actually allocating it. This is useful for HDMI drivers, in > + * combination with __drm_atomic_helper_connector_reset() or > + * drm_atomic_helper_connector_reset(). > + */ > +void __drm_atomic_helper_connector_hdmi_reset(struct drm_connector *connector, > + struct drm_connector_state *new_state) > +{ > +} > +EXPORT_SYMBOL(__drm_atomic_helper_connector_hdmi_reset); > + > /** > * drm_atomic_helper_connector_tv_check - Validate an analog TV connector state > * @connector: DRM Connector > @@ -619,6 +635,25 @@ int drm_atomic_helper_connector_tv_check(struct drm_connector *connector, > } > EXPORT_SYMBOL(drm_atomic_helper_connector_tv_check); > > +/** > + * drm_atomic_helper_connector_hdmi_check() - Helper to check HDMI connector atomic state > + * @connector: DRM Connector > + * @state: the DRM State object > + * > + * Provides a default connector state check handler for HDMI connectors. > + * Checks that a desired connector update is valid, and updates various > + * fields of derived state. > + * > + * RETURNS: > + * Zero on success, or an errno code otherwise. > + */ > +int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector, > + struct drm_atomic_state *state) > +{ > + return 0; > +} > +EXPORT_SYMBOL(drm_atomic_helper_connector_hdmi_check); > + > /** > * __drm_atomic_helper_connector_duplicate_state - copy atomic connector state > * @connector: connector object > diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h > index b9740edb2658..d59d2b3aef9a 100644 > --- a/include/drm/drm_atomic_state_helper.h > +++ b/include/drm/drm_atomic_state_helper.h > @@ -71,7 +71,11 @@ void __drm_atomic_helper_connector_state_reset(struct drm_connector_state *conn_ > void __drm_atomic_helper_connector_reset(struct drm_connector *connector, > struct drm_connector_state *conn_state); > void drm_atomic_helper_connector_reset(struct drm_connector *connector); > +void __drm_atomic_helper_connector_hdmi_reset(struct drm_connector *connector, > + struct drm_connector_state *new_state); > void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector); > +int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector, > + struct drm_atomic_state *state); > int drm_atomic_helper_connector_tv_check(struct drm_connector *connector, > struct drm_atomic_state *state); > void drm_atomic_helper_connector_tv_margins_reset(struct drm_connector *connector); > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h > index 4491c4c2fb6e..000a2a156619 100644 > --- a/include/drm/drm_connector.h > +++ b/include/drm/drm_connector.h > @@ -1031,6 +1031,13 @@ struct drm_connector_state { > * DRM blob property for HDR output metadata > */ > struct drm_property_blob *hdr_output_metadata; > + > + /** > + * @hdmi: HDMI-related variable and properties. Filled by > + * @drm_atomic_helper_connector_hdmi_check(). > + */ > + struct { > + } hdmi; > }; > > /** > > -- > 2.43.0 >