Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp1529884ybx; Thu, 31 Oct 2019 11:58:34 -0700 (PDT) X-Google-Smtp-Source: APXvYqxQIanPUmY/oPhPDrlRWcTnV3hHFDVe68dgntn1W3LPBrML5laIp0yVkTcMIOKJ7k2kVymD X-Received: by 2002:a17:906:e101:: with SMTP id gj1mr5860306ejb.253.1572548314306; Thu, 31 Oct 2019 11:58:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572548314; cv=none; d=google.com; s=arc-20160816; b=cRnPw/UOcEyQ0NOfTTZFLvAoiSHlS/Ny6ERjPGux1bsOlSs/fRBlmwUbKKr46tMzYI EfIIdXZQsC7pGY2BAqLbt7p9/orzmqKgCYlnIvASu63vJFfSuLhz4YPWYgdW+iT13Me7 wUHsA6+f3BEdFiU/3k1pEvi2fbkFyrGkf5ElTtnerDBb8Sie7WnpyNYRgqqWvo95oCwM uzUvdTxFWZpT9njFeSxx+VaFLZCGue7gxoQP/sn1SNK8+YPoqwcEHUKCqBPWEqwTwpya 5mk1bER3T/efnuIkQAJkr5VI9Dz61Th9852aRBSq1jJRi+CC3Tuk84US/0GAMmmP1iPQ myZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=Hwivt2QaT2reDFA/i4CNRv6b//VFZ+Pr2+rJ26/VMuo=; b=winiSspGq5YY7957jaXHO7iAqy21fC3R8nltZJUfe9/BE96t1M1oS0Hdm+sFfm+xrN AwzC7e+1i+8qj5NPDMn6Hw/wbRftCbXVfNFw8bdyd5VYopKFLy4oO9bcKlc5GDu6DBKT FWOiLnVeVHs0C0vFEApj2cWjFx7+JCfvrqJE7m0oAeSb2vLXkTtTSMWP1QIVcS2UOrSb sgwGDmFhfmIolwld3wBhTDTUFbD/kmEnMXvvTI4p8fztywcqPvehww0hLd3fp36EMACn q5NmuYKM28OABjn4Dnj4awBqAnBDwDiH0VBib0oaoUHrUtrx/gUtYa5FAn6a4KLOQJnQ imtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=UHZMltmu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 4si4795468ejc.382.2019.10.31.11.58.11; Thu, 31 Oct 2019 11:58:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=UHZMltmu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729495AbfJaS5Y (ORCPT + 99 others); Thu, 31 Oct 2019 14:57:24 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:43307 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729449AbfJaS5W (ORCPT ); Thu, 31 Oct 2019 14:57:22 -0400 Received: by mail-pg1-f195.google.com with SMTP id l24so4625645pgh.10; Thu, 31 Oct 2019 11:57:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Hwivt2QaT2reDFA/i4CNRv6b//VFZ+Pr2+rJ26/VMuo=; b=UHZMltmuREk7VrkYOBkMqMXOM6cIfVpk/UfNwK6IdUHWJ17SeOSEl0jXpY27VztQ9u hRsSXK1zA9+s7fvcIa3gR7Nn6DQB/k8KKeuqSms3szB0bksnq4TbHqJc93SHIvg0jO9i fh1PoTE2bOnGK1n/Ci5qzhathMpyLiQTeGp8evC6WElzYWD5TL9A6CSRLUOgNRHo/8az LNh47zI2LvDiArO7MzdWfiq2dn2PfJKB1w0ugHUPHcl3rPKbt7Eae6j4x/2hoOxbkIFe BjOtpnDLvVNy5dN3VzRVdIlcRpsQ19husDGyqo86UIoiiUXOJkePLNK3SUidbJ4CEMU0 JWZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Hwivt2QaT2reDFA/i4CNRv6b//VFZ+Pr2+rJ26/VMuo=; b=Iwm2DqF1FShT9KlQZFlfYmgmDs4Qxwf/jSOIQVOWUtZVZqK9PLO6hoUNzfsRhbIrXs wFf4cyVRoxNub/lq+N9nGbzEmes8Kr5j/znhAxz4iv5MAjuEJWw8w1qExrFDSypj3Tsx lXYiQzn+DQk6AjfRq3CrUjmflnGARrYM+f0BE3Z/HYlY+c2OUCwWUgjKoRGAq0CaSfjQ EoA0FYfntIsT/jtmp9AzSQU478J92Kp3IwvLuvoi4PeuBWklnrGou7Ud8Pd54GaDd4si hTkbm9Nwckmt25UU/lHSIpaqn9Ebnex9HApUEdEUFIBQvk7u0T8eYrqV05tGY9umwMMD LUcw== X-Gm-Message-State: APjAAAUZr4CCcJkLEbDZnmO3ZQmXNKmngJ7PGfj5lYg6WojNvXwTN9oY 4W/90t9G3fwfki/0RvMqC3o= X-Received: by 2002:a63:1b59:: with SMTP id b25mr8435157pgm.267.1572548241313; Thu, 31 Oct 2019 11:57:21 -0700 (PDT) Received: from aw-bldr-10.qualcomm.com (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id j186sm3130951pfg.161.2019.10.31.11.57.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 31 Oct 2019 11:57:20 -0700 (PDT) From: Jeffrey Hugo To: bjorn.andersson@linaro.org, mturquette@baylibre.com, sboyd@kernel.org Cc: agross@kernel.org, marc.w.gonzalez@free.fr, linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Jeffrey Hugo Subject: [PATCH v5 1/3] clk: qcom: Allow constant ratio freq tables for rcg Date: Thu, 31 Oct 2019 11:57:15 -0700 Message-Id: <20191031185715.15504-1-jeffrey.l.hugo@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191031185538.15402-1-jeffrey.l.hugo@gmail.com> References: <20191031185538.15402-1-jeffrey.l.hugo@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some RCGs (the gfx_3d_src_clk in msm8998 for example) are basically just some constant ratio from the input across the entire frequency range. It would be great if we could specify the frequency table as a single entry constant ratio instead of a long list, ie: { .src = P_GPUPLL0_OUT_EVEN, .pre_div = 3 }, { } So, lets support that. We need to fix a corner case in qcom_find_freq() where if the freq table is non-null, but has no frequencies, we end up returning an "entry" before the table array, which is bad. Then, we need ignore the freq from the table, and instead base everything on the requested freq. Suggested-by: Stephen Boyd Signed-off-by: Jeffrey Hugo --- drivers/clk/qcom/clk-rcg2.c | 2 ++ drivers/clk/qcom/common.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/drivers/clk/qcom/clk-rcg2.c b/drivers/clk/qcom/clk-rcg2.c index b98b81ef43a1..5a89ed88cc27 100644 --- a/drivers/clk/qcom/clk-rcg2.c +++ b/drivers/clk/qcom/clk-rcg2.c @@ -220,6 +220,8 @@ static int _freq_tbl_determine_rate(struct clk_hw *hw, const struct freq_tbl *f, if (clk_flags & CLK_SET_RATE_PARENT) { rate = f->freq; if (f->pre_div) { + if (!rate) + rate = req->rate; rate /= 2; rate *= f->pre_div + 1; } diff --git a/drivers/clk/qcom/common.c b/drivers/clk/qcom/common.c index 28ddc747d703..f1a32c5fcb8d 100644 --- a/drivers/clk/qcom/common.c +++ b/drivers/clk/qcom/common.c @@ -29,6 +29,9 @@ struct freq_tbl *qcom_find_freq(const struct freq_tbl *f, unsigned long rate) if (!f) return NULL; + if(!f->freq) + return f; + for (; f->freq; f++) if (rate <= f->freq) return f; -- 2.17.1