Received: by 2002:a5d:9c59:0:0:0:0:0 with SMTP id 25csp2154363iof; Tue, 7 Jun 2022 21:34:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynSwS/mfDt+iuJwYqzxs6PMfS6EB+wQRceifFOD+AHz9+SZ+uDY2komvqVIi9hfmt5Cle/ X-Received: by 2002:a62:7b94:0:b0:51b:c723:5724 with SMTP id w142-20020a627b94000000b0051bc7235724mr31082645pfc.8.1654662852734; Tue, 07 Jun 2022 21:34:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654662852; cv=none; d=google.com; s=arc-20160816; b=vXtL9drYIcg8QfoTjIVMBBKshUtPkMJu2KRqorS4NIauTZZf3ZjKvrJGrjIoWK2F90 pSrlt6TgETnVSTBYTrVaBVyB2UWhR72rQEG5TGdv9f/F/cnmU50TBsCJTDQ1fx9T3xfx wIe2lM6vKK+vmtj2SfIbNoxran81+7jADdHDZQfqawzh5LFoqB9mNF9GfvmmX1riS2Yx 70D/OEBa1rrLBZQuT9e8ROQyS8N4TdRH4JJo6KWA/Vb1OoYS4Amgn5RqQ787x12NbkUN ajQ5sX43VCsjprT/2CrLux52g1iR10yI0A4QMMyjFBIb7yNKE/dvENiqDoEc0QhHZafx cMKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=S0q219vkHaP6TrWxCbdxDmaD/GCkEn+weulG/0OK+/8=; b=Z76UuzdwITdkZgtJoduVmDlqrpILMHiGQeaFWHaUvoYP+pNhtPSUbtHVtbCTKvt4sF Vt2Ge0tVmH8rI5UKH64I/hmscMIwywWkU3ibVq/YkHnthR+hZ4aIoGmVqv+d/aY2bE8R embFkZpZTmsrIK31haU4s/Ri5ZMiK5yhd1m7PWAYQo45rLpf7hEBsx1/ieVViXEPRTJu YvdGu6RRJ5j4GMXY8dB+B6xxJNLmgVmiFywQTNKsbO0bzsK7Ep7/hK7xPVYQKL2a/ibr YnYqsZdmFUhkgG2NGIJ7o14D6ARLTePBHeuhd8lNsIVZ4RV95VTJFAtzXg7/Sr9KgoQK bmNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=WQMVaFOa; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id n9-20020a170903110900b00167839e8126si10941898plh.590.2022.06.07.21.34.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 21:34:12 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=WQMVaFOa; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id C4F42265629; Tue, 7 Jun 2022 21:02:42 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382528AbiFGVvd (ORCPT + 99 others); Tue, 7 Jun 2022 17:51:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35442 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378241AbiFGUzw (ORCPT ); Tue, 7 Jun 2022 16:55:52 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D8D7212B02F; Tue, 7 Jun 2022 11:44:02 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 349B561667; Tue, 7 Jun 2022 18:44:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40C4FC385A2; Tue, 7 Jun 2022 18:44:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1654627441; bh=0uxE18e2AfanWQQDQShi5sm63VVmRKaaDhXCasV9Sko=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WQMVaFOaDtJ12Zp5Nr02VnJhiQHEjbV9QLweD5E9MeTyHsLRm9A/2gnQN1DIEmwdM mV/fmXlYlRqHoOdBR86Xd71Lb8YShrN9HBm8jVUPVSn44zJvTnO3ljHobirQp4cj41 yRpnH2NANhgwsJYRPTeD4PV5+B3VB/ePRCC7FyGU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Diogo Ivo , Thierry Reding Subject: [PATCH 5.17 742/772] clk: tegra: Add missing reset deassertion Date: Tue, 7 Jun 2022 19:05:34 +0200 Message-Id: <20220607165010.897752482@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220607164948.980838585@linuxfoundation.org> References: <20220607164948.980838585@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,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 lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Diogo Ivo commit 23a43cc437e747473d5f8f98b4fe189fb5c433b7 upstream. Commit 4782c0a5dd88 ("clk: tegra: Don't deassert reset on enabling clocks") removed deassertion of reset lines when enabling peripheral clocks. This breaks the initialization of the DFLL driver which relied on this behaviour. Fix this problem by adding explicit deassert/assert requests to the driver. Tested on Google Pixel C. Cc: stable@vger.kernel.org Fixes: 4782c0a5dd88 ("clk: tegra: Don't deassert reset on enabling clocks") Signed-off-by: Diogo Ivo Signed-off-by: Thierry Reding Signed-off-by: Greg Kroah-Hartman --- drivers/clk/tegra/clk-dfll.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) --- a/drivers/clk/tegra/clk-dfll.c +++ b/drivers/clk/tegra/clk-dfll.c @@ -271,6 +271,7 @@ struct tegra_dfll { struct clk *ref_clk; struct clk *i2c_clk; struct clk *dfll_clk; + struct reset_control *dfll_rst; struct reset_control *dvco_rst; unsigned long ref_rate; unsigned long i2c_clk_rate; @@ -1464,6 +1465,7 @@ static int dfll_init(struct tegra_dfll * return -EINVAL; } + reset_control_deassert(td->dfll_rst); reset_control_deassert(td->dvco_rst); ret = clk_prepare(td->ref_clk); @@ -1509,6 +1511,7 @@ di_err1: clk_unprepare(td->ref_clk); reset_control_assert(td->dvco_rst); + reset_control_assert(td->dfll_rst); return ret; } @@ -1530,6 +1533,7 @@ int tegra_dfll_suspend(struct device *de } reset_control_assert(td->dvco_rst); + reset_control_assert(td->dfll_rst); return 0; } @@ -1548,6 +1552,7 @@ int tegra_dfll_resume(struct device *dev { struct tegra_dfll *td = dev_get_drvdata(dev); + reset_control_deassert(td->dfll_rst); reset_control_deassert(td->dvco_rst); pm_runtime_get_sync(td->dev); @@ -1951,6 +1956,12 @@ int tegra_dfll_register(struct platform_ td->soc = soc; + td->dfll_rst = devm_reset_control_get_optional(td->dev, "dfll"); + if (IS_ERR(td->dfll_rst)) { + dev_err(td->dev, "couldn't get dfll reset\n"); + return PTR_ERR(td->dfll_rst); + } + td->dvco_rst = devm_reset_control_get(td->dev, "dvco"); if (IS_ERR(td->dvco_rst)) { dev_err(td->dev, "couldn't get dvco reset\n"); @@ -2087,6 +2098,7 @@ struct tegra_dfll_soc_data *tegra_dfll_u clk_unprepare(td->i2c_clk); reset_control_assert(td->dvco_rst); + reset_control_assert(td->dfll_rst); return td->soc; }