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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18DCBC4332F for ; Wed, 2 Feb 2022 11:46:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343930AbiBBLqM (ORCPT ); Wed, 2 Feb 2022 06:46:12 -0500 Received: from mo4-p02-ob.smtp.rzone.de ([85.215.255.82]:42497 "EHLO mo4-p02-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231171AbiBBLqK (ORCPT ); Wed, 2 Feb 2022 06:46:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1643802349; s=strato-dkim-0002; d=goldelico.com; h=To:References:Message-Id:Cc:Date:In-Reply-To:From:Subject:Cc:Date: From:Subject:Sender; bh=TtvoWSTeL86+2UdMFHXJnnZ7SF/U+8Ottw8P6+WAnO8=; b=j6INEz5LNARY9fyK4DWoXKO/j1ywNY86K44G4JPKGieF+fXkYXed/4r2mxE/TNqc8w rFNa2qao/Vb4pSS+vCkbvo34JdKxjVCmwzfAk11t/X2Uh4LA00qPF72Rmi3O3ogSPeLG evRifJQss+HyQGRkUgY6y8ShV2Z/1aowEgyWQQ07pqN1BUUhneQZGek3vJRBR9WXO94T 4+Fb+pLYV0goS1dd6vr4qUV/td5yzKysIKc7iJOO8a+4cnS5kN/rwOiHvuURCklAxbq0 8JkBqcZ34H5mCOpApj08qBiI9cmrnFsqcTmo0wVE97PAdqjWDmx0PWU0Nyz11/fKUISc 4nUw== Authentication-Results: strato.com; dkim=none X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMgPgp8VKxflSZ1P34KBj7wpz8NIGH/jrwDCocQ==" X-RZG-CLASS-ID: mo00 Received: from imac.fritz.box by smtp.strato.de (RZmta 47.39.0 DYNA|AUTH) with ESMTPSA id L29417y12Bjm9gk (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve X9_62_prime256v1 with 256 ECDH bits, eq. 3072 bits RSA)) (Client did not present a certificate); Wed, 2 Feb 2022 12:45:48 +0100 (CET) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.21\)) Subject: Re: [PATCH v12 7/9] drm/bridge: display-connector: add ddc-en gpio support From: "H. Nikolaus Schaller" In-Reply-To: Date: Wed, 2 Feb 2022 12:45:47 +0100 Cc: Rob Herring , Mark Rutland , Thomas Bogendoerfer , Geert Uytterhoeven , Kees Cook , "Eric W. Biederman" , Miquel Raynal , David Airlie , Daniel Vetter , Neil Armstrong , Robert Foss , Laurent Pinchart , Jernej Skrabec , Harry Wentland , Sam Ravnborg , Maxime Ripard , Hans Verkuil , Liam Girdwood , Mark Brown , Paul Boddie , Andrzej Hajda , Kieran Bingham , devicetree@vger.kernel.org, linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, letux-kernel@openphoenux.org, Jonas Karlman , dri-devel@lists.freedesktop.org Content-Transfer-Encoding: quoted-printable Message-Id: <67B24AC4-2E72-4A3C-8CCD-785B00F79CB1@goldelico.com> References: <77a7a1daaf381e1651be38adb62f9af9dd6c8fc5.1643632014.git.hns@goldelico.com> To: Paul Cercueil X-Mailer: Apple Mail (2.3445.104.21) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Paul, > Am 02.02.2022 um 11:32 schrieb Paul Cercueil : >=20 > Hi Nikolaus, >=20 > Le lun., janv. 31 2022 at 13:26:53 +0100, H. Nikolaus Schaller = a =C3=A9crit : >> "hdmi-connector.yaml" bindings defines an optional property >> "ddc-en-gpios" for a single gpio to enable DDC operation. >> Usually this controls +5V power on the HDMI connector. >> This +5V may also be needed for HPD. >> This was not reflected in code. >> Now, the driver activates the ddc gpio after probe and >> deactivates after remove so it is "almost on". >> But only if this driver is loaded (and not e.g. blacklisted >> as module). >> Signed-off-by: H. Nikolaus Schaller >> --- >> drivers/gpu/drm/bridge/display-connector.c | 17 +++++++++++++++++ >> 1 file changed, 17 insertions(+) >> diff --git a/drivers/gpu/drm/bridge/display-connector.c = b/drivers/gpu/drm/bridge/display-connector.c >> index d24f5b90feabf..555395e301096 100644 >> --- a/drivers/gpu/drm/bridge/display-connector.c >> +++ b/drivers/gpu/drm/bridge/display-connector.c >> @@ -24,6 +24,7 @@ struct display_connector { >> int hpd_irq; >> struct regulator *dp_pwr; >> + struct gpio_desc *ddc_en; >> }; >> static inline struct display_connector * >> @@ -345,6 +346,19 @@ static int display_connector_probe(struct = platform_device *pdev) >> } >> } >> + /* enable DDC */ >> + if (type =3D=3D DRM_MODE_CONNECTOR_HDMIA) { >> + conn->ddc_en =3D devm_gpiod_get_optional(&pdev->dev, = "ddc-en", >> + GPIOD_OUT_HIGH); >> + >> + if (IS_ERR(conn->ddc_en)) { >> + dev_err(&pdev->dev, "Couldn't get ddc-en = gpio\n"); >> + return PTR_ERR(conn->ddc_en); >> + } >> + >> + gpiod_set_value(conn->ddc_en, 1); >=20 > You already requested the gpio with the GPIOD_OUT_HIGH flag, so this = can be removed. Ah, ok! >=20 >=20 >> + } >> + >> conn->bridge.funcs =3D &display_connector_bridge_funcs; >> conn->bridge.of_node =3D pdev->dev.of_node; >> @@ -373,6 +387,9 @@ static int display_connector_remove(struct = platform_device *pdev) >> { >> struct display_connector *conn =3D platform_get_drvdata(pdev); >> + if (conn->ddc_en) >> + gpiod_set_value(conn->ddc_en, 0); >=20 > Note that gpiod_set_value() already does the null-check internally. Indeed. > I actually do prefer your solution, so this is fine with me, but = maintainers may have a different opinion. I am fine with any of them. Just need to know which one to take (and = test). BR, Nikolaus >=20 > Cheers, > -Paul >=20 >> + >> if (conn->dp_pwr) >> regulator_disable(conn->dp_pwr); >> -- >> 2.33.0 >=20 >=20 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 14A79C433F5 for ; Wed, 2 Feb 2022 11:45:59 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3812C10E544; Wed, 2 Feb 2022 11:45:59 +0000 (UTC) X-Greylist: delayed 170335 seconds by postgrey-1.36 at gabe; Wed, 02 Feb 2022 11:45:58 UTC Received: from mo4-p02-ob.smtp.rzone.de (mo4-p02-ob.smtp.rzone.de [81.169.146.168]) by gabe.freedesktop.org (Postfix) with ESMTPS id 30DA410E544 for ; Wed, 2 Feb 2022 11:45:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1643802349; s=strato-dkim-0002; d=goldelico.com; h=To:References:Message-Id:Cc:Date:In-Reply-To:From:Subject:Cc:Date: From:Subject:Sender; bh=TtvoWSTeL86+2UdMFHXJnnZ7SF/U+8Ottw8P6+WAnO8=; b=j6INEz5LNARY9fyK4DWoXKO/j1ywNY86K44G4JPKGieF+fXkYXed/4r2mxE/TNqc8w rFNa2qao/Vb4pSS+vCkbvo34JdKxjVCmwzfAk11t/X2Uh4LA00qPF72Rmi3O3ogSPeLG evRifJQss+HyQGRkUgY6y8ShV2Z/1aowEgyWQQ07pqN1BUUhneQZGek3vJRBR9WXO94T 4+Fb+pLYV0goS1dd6vr4qUV/td5yzKysIKc7iJOO8a+4cnS5kN/rwOiHvuURCklAxbq0 8JkBqcZ34H5mCOpApj08qBiI9cmrnFsqcTmo0wVE97PAdqjWDmx0PWU0Nyz11/fKUISc 4nUw== Authentication-Results: strato.com; dkim=none X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMgPgp8VKxflSZ1P34KBj7wpz8NIGH/jrwDCocQ==" X-RZG-CLASS-ID: mo00 Received: from imac.fritz.box by smtp.strato.de (RZmta 47.39.0 DYNA|AUTH) with ESMTPSA id L29417y12Bjm9gk (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve X9_62_prime256v1 with 256 ECDH bits, eq. 3072 bits RSA)) (Client did not present a certificate); Wed, 2 Feb 2022 12:45:48 +0100 (CET) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.21\)) Subject: Re: [PATCH v12 7/9] drm/bridge: display-connector: add ddc-en gpio support From: "H. Nikolaus Schaller" In-Reply-To: Date: Wed, 2 Feb 2022 12:45:47 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: <67B24AC4-2E72-4A3C-8CCD-785B00F79CB1@goldelico.com> References: <77a7a1daaf381e1651be38adb62f9af9dd6c8fc5.1643632014.git.hns@goldelico.com> To: Paul Cercueil X-Mailer: Apple Mail (2.3445.104.21) 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: , Cc: Mark Rutland , Paul Boddie , Geert Uytterhoeven , Neil Armstrong , David Airlie , Rob Herring , linux-mips@vger.kernel.org, Laurent Pinchart , Andrzej Hajda , Miquel Raynal , Sam Ravnborg , Jernej Skrabec , devicetree@vger.kernel.org, Kees Cook , Jonas Karlman , Mark Brown , Maxime Ripard , letux-kernel@openphoenux.org, Thomas Bogendoerfer , dri-devel@lists.freedesktop.org, Liam Girdwood , Robert Foss , linux-kernel@vger.kernel.org, Kieran Bingham , "Eric W. Biederman" , Hans Verkuil Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi Paul, > Am 02.02.2022 um 11:32 schrieb Paul Cercueil : >=20 > Hi Nikolaus, >=20 > Le lun., janv. 31 2022 at 13:26:53 +0100, H. Nikolaus Schaller = a =C3=A9crit : >> "hdmi-connector.yaml" bindings defines an optional property >> "ddc-en-gpios" for a single gpio to enable DDC operation. >> Usually this controls +5V power on the HDMI connector. >> This +5V may also be needed for HPD. >> This was not reflected in code. >> Now, the driver activates the ddc gpio after probe and >> deactivates after remove so it is "almost on". >> But only if this driver is loaded (and not e.g. blacklisted >> as module). >> Signed-off-by: H. Nikolaus Schaller >> --- >> drivers/gpu/drm/bridge/display-connector.c | 17 +++++++++++++++++ >> 1 file changed, 17 insertions(+) >> diff --git a/drivers/gpu/drm/bridge/display-connector.c = b/drivers/gpu/drm/bridge/display-connector.c >> index d24f5b90feabf..555395e301096 100644 >> --- a/drivers/gpu/drm/bridge/display-connector.c >> +++ b/drivers/gpu/drm/bridge/display-connector.c >> @@ -24,6 +24,7 @@ struct display_connector { >> int hpd_irq; >> struct regulator *dp_pwr; >> + struct gpio_desc *ddc_en; >> }; >> static inline struct display_connector * >> @@ -345,6 +346,19 @@ static int display_connector_probe(struct = platform_device *pdev) >> } >> } >> + /* enable DDC */ >> + if (type =3D=3D DRM_MODE_CONNECTOR_HDMIA) { >> + conn->ddc_en =3D devm_gpiod_get_optional(&pdev->dev, = "ddc-en", >> + GPIOD_OUT_HIGH); >> + >> + if (IS_ERR(conn->ddc_en)) { >> + dev_err(&pdev->dev, "Couldn't get ddc-en = gpio\n"); >> + return PTR_ERR(conn->ddc_en); >> + } >> + >> + gpiod_set_value(conn->ddc_en, 1); >=20 > You already requested the gpio with the GPIOD_OUT_HIGH flag, so this = can be removed. Ah, ok! >=20 >=20 >> + } >> + >> conn->bridge.funcs =3D &display_connector_bridge_funcs; >> conn->bridge.of_node =3D pdev->dev.of_node; >> @@ -373,6 +387,9 @@ static int display_connector_remove(struct = platform_device *pdev) >> { >> struct display_connector *conn =3D platform_get_drvdata(pdev); >> + if (conn->ddc_en) >> + gpiod_set_value(conn->ddc_en, 0); >=20 > Note that gpiod_set_value() already does the null-check internally. Indeed. > I actually do prefer your solution, so this is fine with me, but = maintainers may have a different opinion. I am fine with any of them. Just need to know which one to take (and = test). BR, Nikolaus >=20 > Cheers, > -Paul >=20 >> + >> if (conn->dp_pwr) >> regulator_disable(conn->dp_pwr); >> -- >> 2.33.0 >=20 >=20