From patchwork Tue Oct 19 06:52:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Stein X-Patchwork-Id: 12568765 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7565C4332F for ; Tue, 19 Oct 2021 06:53:02 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 66D336115B for ; Tue, 19 Oct 2021 06:53:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 66D336115B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=ew.tq-group.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2E8526E5B2; Tue, 19 Oct 2021 06:53:00 +0000 (UTC) Received: from mx1.tq-group.com (mx1.tq-group.com [93.104.207.81]) by gabe.freedesktop.org (Postfix) with ESMTPS id F09236E8A5 for ; Tue, 19 Oct 2021 06:52:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1634626378; x=1666162378; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Lg3tuBpYiD/5+hEhYgxgN3r0gs7N1LQRS6hKHorT0gY=; b=AQqqRAFRHnpU/wf9sFmKN/qvoU+PXBQp2A8TivE5xHBd30MXJZpoqnbW YS0UIx8NQ9gQrxyjqZcUOtLaVMhOUy0La/+T+cZEG+5TkgFtscYZdmZ6p JwTn1DMlATrVhtZZk4BTYnMatHDiLtPMItBjzNeDp8mkjAJcIWAZ0Q0F7 Jv6d8kRUMhitOB18inMEK8+FdlEzjr1VIkZSOUCYDAy5Z6B+UOhRtSgld GChuUxiKbF/bnVjJxMfrR2Dc78Bs6HGgzNEtYAU7IYlpiGSkNcl77EgX+ F7iiM9zaaaN6f353GeMCLXIU3ofJbvHXJJnClA/ofABbXwIhXkosdgrCu g==; X-IronPort-AV: E=Sophos;i="5.85,383,1624312800"; d="scan'208";a="20120008" Received: from unknown (HELO tq-pgp-pr1.tq-net.de) ([192.168.6.15]) by mx1-pgp.tq-group.com with ESMTP; 19 Oct 2021 08:52:57 +0200 Received: from mx1.tq-group.com ([192.168.6.7]) by tq-pgp-pr1.tq-net.de (PGP Universal service); Tue, 19 Oct 2021 08:52:57 +0200 X-PGP-Universal: processed; by tq-pgp-pr1.tq-net.de on Tue, 19 Oct 2021 08:52:57 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1634626377; x=1666162377; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Lg3tuBpYiD/5+hEhYgxgN3r0gs7N1LQRS6hKHorT0gY=; b=P59FJZQvZeWHCD5+99nY71skpnfWL9Rvb1Lf1mrc6yeR41aFhNTPz0vd mdpH22sI8cYflfG6LzZx5y+eEQnHijkO+fjcNvDvCVvGkykAIItL+nHpB 25r6HGPnqdQD3Re0OJG/Z7JwbpEUn8+sD5HC0MLxnhK3QXIoyS2I5uQey 9Gf270yKmXR73eISeW8hS5811Q5j///pRNRatImO7IEFQOFYFeP2kBfCk jh0WEng28MecjnWP6NpskS98A74FNdxwkR+WuXgeT+xCfiMVee+1XnkWd 8S2rehI2+ohjR1x5U/MKCe+X2Q/cF+NX+KYrKPd9O73krqUzqklemlK+B g==; X-IronPort-AV: E=Sophos;i="5.85,383,1624312800"; d="scan'208";a="20120001" Received: from vtuxmail01.tq-net.de ([10.115.0.20]) by mx1.tq-group.com with ESMTP; 19 Oct 2021 08:52:53 +0200 Received: from steina-w.tq-net.de (unknown [10.123.49.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by vtuxmail01.tq-net.de (Postfix) with ESMTPSA id 09634280065; Tue, 19 Oct 2021 08:52:53 +0200 (CEST) From: Alexander Stein To: David Airlie , Daniel Vetter , Rob Herring , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: Alexander Stein , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, Sam Ravnborg Subject: [PATCH v3 4/4] drm/bridge: ti-sn65dsi83: Add vcc supply regulator support Date: Tue, 19 Oct 2021 08:52:39 +0200 Message-Id: <20211019065239.969988-5-alexander.stein@ew.tq-group.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211019065239.969988-1-alexander.stein@ew.tq-group.com> References: <20211019065239.969988-1-alexander.stein@ew.tq-group.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" VCC needs to be enabled before releasing the enable GPIO. Reviewed-by: Sam Ravnborg Signed-off-by: Alexander Stein Reviewed-by: Laurent Pinchart --- drivers/gpu/drm/bridge/ti-sn65dsi83.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge/ti-sn65dsi83.c index 9072342566f3..c55c45d5d29a 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -143,6 +144,7 @@ struct sn65dsi83 { struct mipi_dsi_device *dsi; struct drm_bridge *panel_bridge; struct gpio_desc *enable_gpio; + struct regulator *vcc; int dsi_lanes; bool lvds_dual_link; bool lvds_dual_link_even_odd_swap; @@ -292,6 +294,11 @@ static void sn65dsi83_atomic_pre_enable(struct drm_bridge *bridge, struct drm_bridge_state *old_bridge_state) { struct sn65dsi83 *ctx = bridge_to_sn65dsi83(bridge); + int ret; + + ret = regulator_enable(ctx->vcc); + if (ret) + dev_err(ctx->dev, "Failed to enable vcc: %i\n", ret); /* * Reset the chip, pull EN line low for t_reset=10ms, @@ -536,9 +543,14 @@ static void sn65dsi83_atomic_post_disable(struct drm_bridge *bridge, struct drm_bridge_state *old_bridge_state) { struct sn65dsi83 *ctx = bridge_to_sn65dsi83(bridge); + int ret; /* Put the chip in reset, pull EN line low. */ gpiod_set_value(ctx->enable_gpio, 0); + + ret = regulator_disable(ctx->vcc); + if (ret) + dev_err(ctx->dev, "Failed to disable vcc: %i\n", ret); } static enum drm_mode_status @@ -647,6 +659,12 @@ static int sn65dsi83_parse_dt(struct sn65dsi83 *ctx, enum sn65dsi83_model model) ctx->panel_bridge = panel_bridge; + ctx->vcc = devm_regulator_get(dev, "vcc"); + if (IS_ERR(ctx->vcc)) + return dev_err_probe(dev, PTR_ERR(ctx->vcc), + "Failed to get supply 'vcc': %pe\n", + ctx->vcc); + return 0; }