From mboxrd@z Thu Jan 1 00:00:00 1970 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 8E1D3D41D45 for ; Tue, 12 Nov 2024 02:07:56 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C3C6D10E0FE; Tue, 12 Nov 2024 02:07:55 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=denx.de header.i=@denx.de header.b="0FPZs0DN"; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by gabe.freedesktop.org (Postfix) with ESMTPS id 44C9410E0FE for ; Tue, 12 Nov 2024 02:07:54 +0000 (UTC) Received: from tr.lan (ip-86-49-120-218.bb.vodafone.cz [86.49.120.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id A27B9893A5; Tue, 12 Nov 2024 03:07:51 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1731377272; bh=GK07/72rXxlvs8JlB4XrtxGC1E0KAqUfJ6jp0kyZIb0=; h=From:To:Cc:Subject:Date:From; b=0FPZs0DN+mjDvLXPrK4Rsorecp1cYdsuLBbuD2b0SdPYcqWfjJZ7aKBSSd4z+sFcp GmIE0Ih7vGcB8+Q4k67uhSuD3ekBZSVXfUi4FwyVlAq8ouSXHa53tSXqvibMXxqhRd 0+DxkTm/Buo9EcRZHsUZns7KLMfDKjD0G90KWS78Wmw9hW8kungD9r/DxJgM4MtStV EhDNhdSr3zmXPmGG0OtfmoIMy2aEJDWPNb6g2WdloibNeIU6AHIjjYl1P3bqHYJZqT uYVm5sRZL8azLT47NIGQmdOJ0oXn3vsBcUZh8NOv7vUY6No4PQN/Yc9Glcfs/4ufbi LX1O8ISMc/lRQ== From: Marek Vasut To: dri-devel@lists.freedesktop.org Cc: Marek Vasut , Andrzej Hajda , David Airlie , Jernej Skrabec , Jonas Karlman , Laurent Pinchart , Maarten Lankhorst , Maxime Ripard , Neil Armstrong , Robert Foss , Simona Vetter , Thomas Zimmermann Subject: [PATCH v2 1/2] drm/bridge/panel: Add drm_bridge_get_panel to extract panel from last bridge Date: Tue, 12 Nov 2024 03:05:36 +0100 Message-ID: <20241112020737.335297-1-marex@denx.de> X-Mailer: git-send-email 2.45.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean 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" Add drm_bridge_get_panel() function to extract drm_panel pointer from panel_bridge. This can be used by bridges in the middle to look up and access drm_panel at the end, and e.g. extract display_timings from it. Signed-off-by: Marek Vasut --- Cc: Andrzej Hajda Cc: David Airlie Cc: Jernej Skrabec Cc: Jonas Karlman Cc: Laurent Pinchart Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Neil Armstrong Cc: Robert Foss Cc: Simona Vetter Cc: Thomas Zimmermann Cc: dri-devel@lists.freedesktop.org --- V2: - New patch --- drivers/gpu/drm/bridge/panel.c | 18 ++++++++++++++++++ include/drm/drm_bridge.h | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c index 6e88339dec0f5..0e5937dc7ab21 100644 --- a/drivers/gpu/drm/bridge/panel.c +++ b/drivers/gpu/drm/bridge/panel.c @@ -235,6 +235,24 @@ bool drm_bridge_is_panel(const struct drm_bridge *bridge) } EXPORT_SYMBOL(drm_bridge_is_panel); +/** + * drm_bridge_get_panel - Return panel if a drm_bridge is a panel_bridge. + * + * @bridge: The drm_bridge. + * + * Returns drm_panel pointer if the bridge is a panel bridge, or NULL otherwise. + */ +struct drm_panel *drm_bridge_get_panel(struct drm_bridge *bridge) +{ + struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); + + if (!drm_bridge_is_panel(bridge)) + return NULL; + + return panel_bridge->panel; +} +EXPORT_SYMBOL(drm_bridge_get_panel); + /** * drm_panel_bridge_add - Creates a &drm_bridge and &drm_connector that * just calls the appropriate functions from &drm_panel. diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index e8d735b7f6a48..4b64ab47c9d7f 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -984,6 +984,7 @@ void drm_bridge_hpd_notify(struct drm_bridge *bridge, #ifdef CONFIG_DRM_PANEL_BRIDGE bool drm_bridge_is_panel(const struct drm_bridge *bridge); +struct drm_panel *drm_bridge_get_panel(struct drm_bridge *bridge); struct drm_bridge *drm_panel_bridge_add(struct drm_panel *panel); struct drm_bridge *drm_panel_bridge_add_typed(struct drm_panel *panel, u32 connector_type); @@ -1004,6 +1005,11 @@ static inline bool drm_bridge_is_panel(const struct drm_bridge *bridge) return false; } +static struct drm_panel *drm_bridge_get_panel(struct drm_bridge *bridge) +{ + return NULL; +} + static inline int drm_panel_bridge_set_orientation(struct drm_connector *connector, struct drm_bridge *bridge) { -- 2.45.2