Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp179326iob; Mon, 2 May 2022 16:24:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyLOQIlxEK8gHypI7Je1Xrt4lbOFwR4icYoAWgiFo3IE5VFo/X2z8O/TZHcfNmkuiqJiTKm X-Received: by 2002:a62:d0c5:0:b0:50d:a467:3cc8 with SMTP id p188-20020a62d0c5000000b0050da4673cc8mr13559578pfg.81.1651533893429; Mon, 02 May 2022 16:24:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651533893; cv=none; d=google.com; s=arc-20160816; b=sNb8iljQku6ebw73Xfmmi6b6EzXWv8+QC88hvfofAh+Uc0BV+eThg8DX1/3lKbk5of Rptg/0rf17mSUERZzwFoTmzcbL9lJpPhteuaTz0JZxvuOvdKDBfM0aG+RQbCeLwEnadJ ULrmM7Bgr/nUepRfABkZdrF1RYxbwnhTdCY6Ks9r8QkdxHMMeCxfQAP8Zntmq31/sgnC GFcKeRVQ9DWZTdKZ3kMCe1sXr/i0nJ0pqzPc142JfrWcWC8KPbtOr0O1RXf0spntmvEp yDuuUMrR/BMaqOtJB9M3DmD/xw/xoO7gsz7NdTQbSbrM0p0hTMTFjZ+QhD07iSc7rxck 8ZCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=3KdH4A/ZIDn5iuBBsHJpj90JbgUsoauLAn0Cyltu/wo=; b=XRdrZlH+9R5R5e7s5eV1B8/PWe5ZYxsjU206hYFMxkJhi8A/badIp3IYRm55kxmXdB lwfyYrI5fRfr2aL5/8LyYeMxMPAjB+UNEeaMzHOLPtkAWflz8XbfTkp3LdHEfrPRMNxV XhL9Tm1SZ3rjjEPzDbkf/N+8JYCJdh7Vf41WjrLAPIUS39QyaR4kBWAHCIX3CNl4eIgB REra1Sg5Ci2o8UaqgIun7foJGjI8K2BO6a3Ldh9Q9pI6Uo/jOw4CDk0rS8aqTLPjJDs/ IJtjzIAtTLOUfeLyj+r1+q4HytlcrX7pZhZO9eG5hns1F/GPM/Kt7HAAY3dhMInB9T2s KfJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ZAqsmHWc; 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=linaro.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id s14-20020a17090302ce00b001562e0ba125si14329130plk.504.2022.05.02.16.24.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 May 2022 16:24:53 -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=@linaro.org header.s=google header.b=ZAqsmHWc; 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=linaro.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 194411EAFB; Mon, 2 May 2022 16:24:32 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239236AbiD3N3D (ORCPT + 99 others); Sat, 30 Apr 2022 09:29:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39146 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238390AbiD3N2w (ORCPT ); Sat, 30 Apr 2022 09:28:52 -0400 Received: from mail-yw1-x1129.google.com (mail-yw1-x1129.google.com [IPv6:2607:f8b0:4864:20::1129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A43B2CCB7 for ; Sat, 30 Apr 2022 06:25:29 -0700 (PDT) Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-2f7c424c66cso110676907b3.1 for ; Sat, 30 Apr 2022 06:25:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=3KdH4A/ZIDn5iuBBsHJpj90JbgUsoauLAn0Cyltu/wo=; b=ZAqsmHWcvQoTKbn3/olPYcBsf4oSR7+H6NzpjY2hOfVYJoxtv4I8ztsVWQzD96C5c4 0e5kjEEJ/skZZk3TCb4aPYieTeX7AX2BkcYpefa/WTKkDcoviN+8kgCTBxTpOyl6cA9/ +JbZ90+YCM51mBFxlFPPpWIYSGOFxMFkj5k+E3UDy6/4tWQrj1GQZd8j8Gl2xHTijGjy G/I6qClpb2aALae2Jdyb+8oGvwEd5/ioLsgHOKub5vaCnwkOiTGfnSrLj+boA1oOrF9Y ckiXh3fh1UVFsvZptRpSEC2PcqR12sHLK9rjr3zg0AeDDKYZbVyJgjwQjCVSojSfpcSz gPrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=3KdH4A/ZIDn5iuBBsHJpj90JbgUsoauLAn0Cyltu/wo=; b=dxO0vAEYioUc+FkBlJJKcF2TJ6ZoCtCxD6huXDzr2rdDe4j+OwHU9joQRhDyAm6Jcn DDXXX/mCstPKMCzo/k4jK+TcL38RuEsN92dpiMBQbJAxO5+95q6CaSTPljV7XJGPSO47 rrot1OG+DrR3uGgOkie8fHiPxy/dKH9EWb7zbgjAERqt0TQc2defL78pz871S+2P7Q4Z 14Tb8khr2yJI4gGqTsbPFikq2btYb0kBqGrvWMUL/2rG/Slp/kngNOWVcVnQ/0DGLaVH K0R9smnixfpV4NGEmGASv7q2l47emU9Jrj1aQzmZyEFIL2w0yzYbjmprcZ2YMgmSIvkj sUWQ== X-Gm-Message-State: AOAM533aSDes2LJF4mNuwS3QDA63cTeTlwnyNP7KqDUiiHGIJGx7k0Da /rOl7UYcWW/7aj4iOJx2FyTXJTIKGxjOOmubNLPy3A== X-Received: by 2002:a81:1d4e:0:b0:2f7:be8b:502e with SMTP id d75-20020a811d4e000000b002f7be8b502emr3980575ywd.278.1651325128489; Sat, 30 Apr 2022 06:25:28 -0700 (PDT) MIME-Version: 1.0 References: <20220430054458.31321-1-ansuelsmth@gmail.com> <20220430054458.31321-4-ansuelsmth@gmail.com> In-Reply-To: <20220430054458.31321-4-ansuelsmth@gmail.com> From: Dmitry Baryshkov Date: Sat, 30 Apr 2022 16:25:17 +0300 Message-ID: Subject: Re: [PATCH v2 3/3] clk: qcom: clk-krait: add apq/ipq8064 errata workaround To: Ansuel Smith Cc: Bjorn Andersson , Andy Gross , Michael Turquette , Stephen Boyd , Sricharan R , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,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=no 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 On Sat, 30 Apr 2022 at 15:53, Ansuel Smith wrote: > > Add apq/ipq8064 errata workaround where the sec_src clock gating needs to > be disabled during switching. krait-cc compatible is not enough to > handle this and limit this workaround to apq/ipq8064. We check machine > compatible to handle this. > > Signed-off-by: Ansuel Smith Reviewed-by: Dmitry Baryshkov > --- > drivers/clk/qcom/clk-krait.c | 16 ++++++++++++++++ > drivers/clk/qcom/clk-krait.h | 1 + > drivers/clk/qcom/krait-cc.c | 8 ++++++++ > 3 files changed, 25 insertions(+) > > diff --git a/drivers/clk/qcom/clk-krait.c b/drivers/clk/qcom/clk-krait.c > index 90046428693c..45da736bd5f4 100644 > --- a/drivers/clk/qcom/clk-krait.c > +++ b/drivers/clk/qcom/clk-krait.c > @@ -18,13 +18,23 @@ > static DEFINE_SPINLOCK(krait_clock_reg_lock); > > #define LPL_SHIFT 8 > +#define SECCLKAGD BIT(4) > + > static void __krait_mux_set_sel(struct krait_mux_clk *mux, int sel) > { > unsigned long flags; > u32 regval; > > spin_lock_irqsave(&krait_clock_reg_lock, flags); > + > regval = krait_get_l2_indirect_reg(mux->offset); > + > + /* apq/ipq8064 Errata: disable sec_src clock gating during switch. */ > + if (mux->disable_sec_src_gating) { > + regval |= SECCLKAGD; > + krait_set_l2_indirect_reg(mux->offset, regval); > + } > + > regval &= ~(mux->mask << mux->shift); > regval |= (sel & mux->mask) << mux->shift; > if (mux->lpl) { > @@ -33,6 +43,12 @@ static void __krait_mux_set_sel(struct krait_mux_clk *mux, int sel) > } > krait_set_l2_indirect_reg(mux->offset, regval); > > + /* apq/ipq8064 Errata: re-enabled sec_src clock gating. */ > + if (mux->disable_sec_src_gating) { > + regval &= ~SECCLKAGD; > + krait_set_l2_indirect_reg(mux->offset, regval); > + } > + > /* Wait for switch to complete. */ > mb(); > udelay(1); > diff --git a/drivers/clk/qcom/clk-krait.h b/drivers/clk/qcom/clk-krait.h > index 9120bd2f5297..f930538c539e 100644 > --- a/drivers/clk/qcom/clk-krait.h > +++ b/drivers/clk/qcom/clk-krait.h > @@ -15,6 +15,7 @@ struct krait_mux_clk { > u8 safe_sel; > u8 old_index; > bool reparent; > + bool disable_sec_src_gating; > > struct clk_hw hw; > struct notifier_block clk_nb; > diff --git a/drivers/clk/qcom/krait-cc.c b/drivers/clk/qcom/krait-cc.c > index 4d4b657d33c3..cfd961d5cc45 100644 > --- a/drivers/clk/qcom/krait-cc.c > +++ b/drivers/clk/qcom/krait-cc.c > @@ -139,6 +139,14 @@ krait_add_sec_mux(struct device *dev, int id, const char *s, > mux->hw.init = &init; > mux->safe_sel = 0; > > + /* Checking for qcom,krait-cc-v1 or qcom,krait-cc-v2 is not > + * enough to limit this to apq/ipq8064. Directly check machine > + * compatible to correctly handle this errata. > + */ > + if (of_machine_is_compatible("qcom,ipq8064") || > + of_machine_is_compatible("qcom,apq8064")) > + mux->disable_sec_src_gating = true; > + > init.name = kasprintf(GFP_KERNEL, "krait%s_sec_mux", s); > if (!init.name) > return -ENOMEM; > -- > 2.34.1 > -- With best wishes Dmitry