Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp976862ybt; Fri, 19 Jun 2020 20:16:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzrOfQaUhRbGmxNpQdB4ZHcjht2cpiuRy0VYRxk0kpNdnhwi48qVZl2XV8K9bC8CEN7OY+6 X-Received: by 2002:a17:907:2168:: with SMTP id rl8mr2576414ejb.210.1592623013623; Fri, 19 Jun 2020 20:16:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592623013; cv=none; d=google.com; s=arc-20160816; b=xEnf4QuPBoCsfqpU5g/8N1M+BnfiFO7vP0pmqgLAGJrAMRRpaB77dobyA8awr54K+/ dl4q8scBqnRoi/8WFcYuQeM39gc5AHzvmauWGjo7xh2GPlOTzo5WT1KFued5WN6WcdO/ Uo/53v3WMOmVJ1aPTBlVFPtVeXg7rHWassU2ELqhw5KOX0/Set5sAaDC4NTPPfVq48NL MwipcNgwRPuOMVouTGLKRTw9I+CE3kSFEQoXBwOxwktfL5EPynU002maq98ep+MamuQV BzEbzQg79Cvli/qIUrHLGfT3aTFPbgIDWuiktUAu9pka1IUPliagtpYZJ/Rl8qwKbrEM KLyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=8NJIlU6zHtj6MkiMftxHUSOQawlhPA/O8HkkXcRr+9s=; b=HI0schRPK/iKJjWxVsb0Xb6CqqnvRGt0IkHUITia0l7GfV9RUErznFIRmpP2EJhNM2 8A7JPYcvUZg8RbVHXeiStnc0VCRENw31N7eitzKrE+0mMVWmFDLlz0SMqoPZR9QE4+uJ imafzTm6IzBryQOV/W5ZVmQbBzj6lRVfPy4pJ5MI3QB41e0U8U0TWynY13xDmIIISJ/3 UXqvCgnUKctusmX+EI4W2SFO6re2DkOZFUvgzwI//SymUDQaqvh8U5e+R1GK7vMHIIwE NQ9bg/V3m3SxGAriW1CRb+BCmzCZHTRpAXez6NakTluAQ66MnHtwQtVMIzb5kaU1QJiH SJ6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="Uuz9Cjt/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id lj6si5102836ejb.108.2020.06.19.20.16.26; Fri, 19 Jun 2020 20:16:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="Uuz9Cjt/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405435AbgFSP47 (ORCPT + 99 others); Fri, 19 Jun 2020 11:56:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:51838 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392721AbgFSPUi (ORCPT ); Fri, 19 Jun 2020 11:20:38 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 00AA120706; Fri, 19 Jun 2020 15:20:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592580037; bh=jMmbglSJ9HsqY9/TfgPULYPabzVlojJgWVf48BoOzOY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Uuz9Cjt/Oe4HBabGoaSCoIJ99fjDCTrFVRorsvhAESm5eDVPoPnafM/4MWcVTIJbX 6nE166uuHOtT6aqs/TXqo3vioSy+OLdKKsJGDHBJnRRCcVcbPXa841yFh1kUp0QSIC Hnc+MjjkelhiZILUQSIB4GlVEuPaeamgQw7kD7Yw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jitao Shi , Chun-Kuang Hu , Sasha Levin Subject: [PATCH 5.7 098/376] drm/mediatek: set dpi pin mode to gpio low to avoid leakage current Date: Fri, 19 Jun 2020 16:30:16 +0200 Message-Id: <20200619141714.986755155@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141710.350494719@linuxfoundation.org> References: <20200619141710.350494719@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jitao Shi [ Upstream commit 6bd4763fd532cff43f9b15704f324c45a9806f53 ] Config dpi pins mode to output and pull low when dpi is disabled. Aovid leakage current from some dpi pins (Hsync Vsync DE ... ). Signed-off-by: Jitao Shi Signed-off-by: Chun-Kuang Hu Signed-off-by: Sasha Levin --- drivers/gpu/drm/mediatek/mtk_dpi.c | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c index 4f0ce4cd5b8c..2994c63ea279 100644 --- a/drivers/gpu/drm/mediatek/mtk_dpi.c +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c @@ -10,7 +10,9 @@ #include #include #include +#include #include +#include #include #include @@ -74,6 +76,9 @@ struct mtk_dpi { enum mtk_dpi_out_yc_map yc_map; enum mtk_dpi_out_bit_num bit_num; enum mtk_dpi_out_channel_swap channel_swap; + struct pinctrl *pinctrl; + struct pinctrl_state *pins_gpio; + struct pinctrl_state *pins_dpi; int refcount; }; @@ -379,6 +384,9 @@ static void mtk_dpi_power_off(struct mtk_dpi *dpi) if (--dpi->refcount != 0) return; + if (dpi->pinctrl && dpi->pins_gpio) + pinctrl_select_state(dpi->pinctrl, dpi->pins_gpio); + mtk_dpi_disable(dpi); clk_disable_unprepare(dpi->pixel_clk); clk_disable_unprepare(dpi->engine_clk); @@ -403,6 +411,9 @@ static int mtk_dpi_power_on(struct mtk_dpi *dpi) goto err_pixel; } + if (dpi->pinctrl && dpi->pins_dpi) + pinctrl_select_state(dpi->pinctrl, dpi->pins_dpi); + mtk_dpi_enable(dpi); return 0; @@ -705,6 +716,26 @@ static int mtk_dpi_probe(struct platform_device *pdev) dpi->dev = dev; dpi->conf = (struct mtk_dpi_conf *)of_device_get_match_data(dev); + dpi->pinctrl = devm_pinctrl_get(&pdev->dev); + if (IS_ERR(dpi->pinctrl)) { + dpi->pinctrl = NULL; + dev_dbg(&pdev->dev, "Cannot find pinctrl!\n"); + } + if (dpi->pinctrl) { + dpi->pins_gpio = pinctrl_lookup_state(dpi->pinctrl, "sleep"); + if (IS_ERR(dpi->pins_gpio)) { + dpi->pins_gpio = NULL; + dev_dbg(&pdev->dev, "Cannot find pinctrl idle!\n"); + } + if (dpi->pins_gpio) + pinctrl_select_state(dpi->pinctrl, dpi->pins_gpio); + + dpi->pins_dpi = pinctrl_lookup_state(dpi->pinctrl, "default"); + if (IS_ERR(dpi->pins_dpi)) { + dpi->pins_dpi = NULL; + dev_dbg(&pdev->dev, "Cannot find pinctrl active!\n"); + } + } mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); dpi->regs = devm_ioremap_resource(dev, mem); if (IS_ERR(dpi->regs)) { -- 2.25.1